Daniel A. Steffen [Mon, 23 Mar 2009 11:17:38 +0000 (12:17 +0100)]
gitk: Fixes for Mac OS X TkAqua
- middle button is B3 on TkAqua
- add horizontal mousehweel scrolling
- nicer default fonts
- use OSX-specific extdifftool
- remove quit menu item, call doquit on quit event
- move about & preferences menu items into apple menu
- don't set menu font
Signed-off-by: Daniel A. Steffen <redacted>
Signed-off-by: Paul Mackerras <redacted>
Stephen Boyd [Thu, 19 Mar 2009 08:54:18 +0000 (01:54 -0700)]
gitk: Provide a 32x32 window icon based on the git logo
This simply expands the 16x16 logo image to 32x32 and provides it as
an alternative icon image.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Paul Mackerras <redacted>
Giuseppe Bilotta [Thu, 19 Mar 2009 08:54:17 +0000 (01:54 -0700)]
gitk: Provide a window icon if possible
Try to set up a 16x16 Tk photo image (based on the git logo) and use
it as window icon. The code is wrapped in a catch because it may fail
in earlier Tcl/Tk 8.4 releases that don't provide 'wm iconphoto'.
Signed-off-by: Giuseppe Bilotta <redacted>
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Paul Mackerras <redacted>
Pat Thoyts [Mon, 16 Mar 2009 10:24:40 +0000 (10:24 +0000)]
gitk: Handle blobs containing a DOS end-of-file marker
If a patchset contains an EOF marker (Ctrl-Z) the blob diff terminates
at that point. This permits gitk to ignore the eof and continue to
display any subsequent blobs and also displays a sensible representation
of the eof char.
Signed-off-by: Pat Thoyts <redacted>
Signed-off-by: Paul Mackerras <redacted>
Jeff King [Mon, 23 Mar 2009 06:22:29 +0000 (02:22 -0400)]
t0060: fix whitespace in "wc -c" invocation
Some platforms like to stick extra whitespace in the output
of "wc -c"; using the result without quotes gets the shell
to collapse the whitespace.
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 21 Mar 2009 21:35:51 +0000 (14:35 -0700)]
strbuf_check_branch_ref(): a helper to check a refname for a branch
This allows a common calling sequence
strbuf_branchname(&ref, name);
strbuf_splice(&ref, 0, 0, "refs/heads/", 11);
if (check_ref_format(ref.buf))
die(...);
to be refactored into
if (strbuf_check_branch_ref(&ref, name))
die(...);
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 21 Mar 2009 20:23:27 +0000 (13:23 -0700)]
Fix branch -m @{-1} newname
The command is supposed to rename the branch we were on before switched
from to a new name, but was not aware of the short-hand notation we added
recently.
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 21 Mar 2009 21:19:53 +0000 (14:19 -0700)]
check-ref-format --branch: give Porcelain a way to grok branch shorthand
The command may not be the best place to add this new feature, but
$ git check-ref-format --branch "@{-1}"
allows Porcelains to figure out what branch you were on before the last
branch switching.
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 21 Mar 2009 20:17:30 +0000 (13:17 -0700)]
strbuf_branchname(): a wrapper for branch name shorthands
The function takes a user-supplied string that is supposed to be a branch
name, and puts it in a strbuf after expanding possible shorthand notation.
A handful of open coded sequence to do this in the existing code have been
changed to use this helper function.
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 21 Mar 2009 19:51:34 +0000 (12:51 -0700)]
Rename interpret/substitute nth_last_branch functions
These allow you to say "git checkout @{-2}" to switch to the branch two
"branch switching" ago by pretending as if you typed the name of that
branch. As it is likely that we will be introducing more short-hands to
write the name of a branch without writing it explicitly, rename the
functions from "nth_last_branch" to more generic "branch_name", to prepare
for different semantics.
Signed-off-by: Junio C Hamano <redacted>
Stephen Boyd [Mon, 23 Mar 2009 02:14:06 +0000 (19:14 -0700)]
format-patch: --numbered-files and --stdout aren't mutually exclusive
For example:
git format-patch --numbered-files --stdout --attach HEAD~~
will create two messages with files 1 and 2 attached respectively.
There is no effect when using --numbered-files and --stdout together
without an --attach or --inline, the --numbered-files option will be
ignored. Add a test to show this.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
Stephen Boyd [Mon, 23 Mar 2009 02:14:05 +0000 (19:14 -0700)]
format-patch: --attach/inline uses filename instead of SHA1
Currently when format-patch is used with --attach or --inline the patch
attachment has the SHA1 of the commit for its filename. This replaces
the SHA1 with the filename used by format-patch when outputting to
files.
Fix tests relying on the SHA1 output and add a test showing how the
--suffix option affects the attachment filename output.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
Stephen Boyd [Mon, 23 Mar 2009 02:14:04 +0000 (19:14 -0700)]
format-patch: move get_patch_filename() into log-tree
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
Stephen Boyd [Mon, 23 Mar 2009 02:14:03 +0000 (19:14 -0700)]
format-patch: pass a commit to reopen_stdout()
We use the commit to generate the patch filename in reopen_stdout()
before we redirect stdout. The cover letter codepath creates a dummy
commit with the desired subject line 'cover letter'.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
Stephen Boyd [Mon, 23 Mar 2009 02:14:02 +0000 (19:14 -0700)]
format-patch: construct patch filename in one function
reopen_stdout() usually takes the oneline subject of a commit,
appends the patch suffix, prepends the output directory (if any) and
then reopens stdout as the resulting file. Now the patch filename (the
oneline subject and the patch suffix) is created in
get_patch_filename() and passed to reopen_stdout() which prepends the
output directory and reopens stdout as that file.
The original function to get the oneline description,
get_oneline_for_filename(), has been renamed to get_patch_filename() to
reflect its new functionality.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
Stephen Boyd [Mon, 23 Mar 2009 02:14:01 +0000 (19:14 -0700)]
pretty.c: add %f format specifier to format_commit_message()
This specifier represents the sanitized and filename friendly subject
line of a commit. No checks are made against the length of the string,
so users may need to trim the result to the desired length if using as a
filename. This is commonly used by format-patch to massage commit
subjects into filenames and output patches to files.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
David J. Mellor [Mon, 23 Mar 2009 01:00:17 +0000 (18:00 -0700)]
Documentation: minor grammatical fix in git-check-ref-format.txt
Signed-off-by: David J. Mellor <redacted>
Signed-off-by: Junio C Hamano <redacted>
David J. Mellor [Mon, 23 Mar 2009 01:00:16 +0000 (18:00 -0700)]
Documentation: minor grammatical fixes in git-check-attr.txt
Signed-off-by: David J. Mellor <redacted>
Signed-off-by: Junio C Hamano <redacted>
David J. Mellor [Mon, 23 Mar 2009 01:00:15 +0000 (18:00 -0700)]
Documentation: minor grammatical fixes in git-cat-file.txt
Signed-off-by: David J. Mellor <redacted>
Signed-off-by: Junio C Hamano <redacted>
David J. Mellor [Mon, 23 Mar 2009 01:00:14 +0000 (18:00 -0700)]
Documentation: minor grammatical fixes and rewording in git-bundle.txt
This commit also converts all reference specifications to a monospaced font,
as the embedded ~ character used in some of the references sometimes causes
the text up to the next ~ to be displayed incorrectly as a subscript when the
HTML pages are generated. This was tested with asciidoc 8.2.5.
Signed-off-by: David J. Mellor <redacted>
Signed-off-by: Junio C Hamano <redacted>
David J. Mellor [Mon, 23 Mar 2009 03:11:10 +0000 (20:11 -0700)]
Documentation: remove some uses of the passive voice in git-bisect.txt
Signed-off-by: David J. Mellor <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Sun, 22 Mar 2009 08:08:48 +0000 (04:08 -0400)]
Makefile: turn on USE_ST_TIMESPEC for FreeBSD
Fixes broken compilation on FreeBSD 6.1.
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Arto Jonsson [Sun, 22 Mar 2009 18:49:07 +0000 (20:49 +0200)]
bash completion: add options for 'git fsck'
Signed-off-by: Arto Jonsson <redacted>
Acked-by: Shawn O. Pearce <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin McConnell [Sat, 21 Mar 2009 23:29:27 +0000 (16:29 -0700)]
Add --staged to bash completion for git diff
The --staged option (synonym for --cached) isn't listed in the
completion choices for git diff. This tiny patch adds it.
Trivially-Acked-by: Shawn O. Pearce <redacted>
Signed-off-by: Junio C Hamano <redacted>
Alex Riesen [Sun, 22 Mar 2009 22:07:33 +0000 (23:07 +0100)]
Improve error message about fetch into current branch
Otherwise, it is hard to guess why the fetch failed.
Make sure we at least mention that the repository must be bare.
Also the current branch is printed.
Signed-off-by: Alex Riesen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 22 Mar 2009 22:41:42 +0000 (15:41 -0700)]
Merge branch 'maint'
* maint:
everyday: use the dashless form of git-init
Junio C Hamano [Sun, 22 Mar 2009 22:41:00 +0000 (15:41 -0700)]
Merge branch 'maint-1.6.1' into maint
* maint-1.6.1:
everyday: use the dashless form of git-init
Junio C Hamano [Sun, 22 Mar 2009 22:40:55 +0000 (15:40 -0700)]
Merge branch 'maint-1.6.0' into maint-1.6.1
* maint-1.6.0:
everyday: use the dashless form of git-init
Junio C Hamano [Sun, 22 Mar 2009 22:26:07 +0000 (15:26 -0700)]
diff --cached: do not borrow from a work tree when a path is marked as assume-unchanged
When the index says that the file in the work tree that corresponds to the
blob object that is used for comparison is known to be unchanged, "diff"
reads from the file and applies convert_to_git(), instead of inflating the
object, to feed the internal diff engine with, because an earlier
benchnark found that it tends to be faster to use this optimization.
However, the index can lie when the path is marked as assume-unchanged.
Disable the optimization for such paths.
Signed-off-by: Junio C Hamano <redacted>
Johannes Schindelin [Sat, 21 Mar 2009 11:42:52 +0000 (12:42 +0100)]
Smudge the files fed to external diff and textconv
When preparing temporary files for an external diff or textconv, it is
easier on the external tools, especially when they are implemented using
platform tools, if they are fed the input after convert_to_working_tree().
This fixes msysGit issue 177.
Signed-off-by: Johannes Schindelin <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jens Lehmann [Sun, 22 Mar 2009 18:46:38 +0000 (19:46 +0100)]
githooks documentation: post-checkout hook is also called after clone
The documentation of the post-checkout hook just talks
about git-checkout. But recently git-clone was changed to
call it too, unless the -no-checkout (-n) option is used.
Signed-off-by: Jens Lehmann <redacted>
Signed-off-by: Junio C Hamano <redacted>
David Aguilar [Sun, 22 Mar 2009 09:15:13 +0000 (02:15 -0700)]
everyday: use the dashless form of git-init
The 'Everyday GIT' guide was using the old dashed form
of git-init.
Signed-off-by: David Aguilar <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Sun, 22 Mar 2009 08:59:20 +0000 (04:59 -0400)]
remote: improve sorting of "configure for git push" list
The data structure used to store this list is a string_list
of sources with the destination in the util member. The
current code just sorts on the source; if a single source is
pushed to two different destination refs at a remote, then
the order in which they are printed is non-deterministic.
This patch implements a comparison using both fields.
Besides being a little nicer on the eyes, giving a stable
sort prevents false negatives in the test suite when
comparing output.
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Johannes Sixt [Fri, 20 Mar 2009 21:03:33 +0000 (22:03 +0100)]
t5503: GIT_DEBUG_SEND_PACK is not supported on MinGW
The test opens fd 3 and instructs git-upload-pack (via GIT_DEBUG_SEND_PACK)
to log information to that channel.
The way in which new processes are spawned by git on MinGW does not inherit
all file descriptors to the child processes, but only 0, 1, and 2.
The tests in t5503 require that file descriptor 3 is inherited from
git-fetch to git-upload-pack.
A complete implementation is non-trivial and not warranted just to satisfy
this test. Note that the incompleteness applies only to the executables
that use compat/mingw.c; bash and perl (the other important executables
used by git) are complete, of course.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Mon, 16 Mar 2009 14:09:23 +0000 (15:09 +0100)]
t7004: Use prerequisite tags to skip tests that need gpg
The tests are skipped if no gpg was found or if gpg is version 1.0.6.
Previously, the latter condition was checked a bit later in the test file
so that the tag verification tests would be exercised. These are now
skipped as well, but only because we would need a facility to revoke a
test prerequisite, which we do not have.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Mon, 16 Mar 2009 13:44:56 +0000 (14:44 +0100)]
Use prerequisites to skip tests that need unzip
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Fri, 13 Mar 2009 22:00:15 +0000 (23:00 +0100)]
t3700: Skip a test with backslashes in pathspec
The test verifies that glob special characters can be escaped with
backslashes. In particular, the string fo\[ou\]bar is given to git.
On Windows, this does not work because backslashes are first of all
directory separators, and first thing git does with a pathspec from the
command line is to convert backslashes to forward slashes.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Fri, 13 Mar 2009 21:55:27 +0000 (22:55 +0100)]
Skip tests that require a filesystem that obeys POSIX permissions
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Wed, 11 Mar 2009 21:15:10 +0000 (22:15 +0100)]
t0060: Fix tests on Windows
Since the MSYS bash mangles absolute paths that it passes as command line
arguments to non-MSYS progams (such as git or test-path-utils), we have to
bend over backwards to squeeze some usefulness out of the existing tests.
In particular, a set of path normalization tests is added that test
relative paths. Some paths in the ancestor path tests are adjusted to help
MSYS bash's path mangling heuristics.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Wed, 4 Mar 2009 21:38:24 +0000 (22:38 +0100)]
Use prerequisite tags to skip tests that depend on symbolic links
Many tests depend on that symbolic links work. This introduces a check
that sets the prerequisite tag SYMLINKS if the file system supports
symbolic links. Since so many tests have to check for this prerequisite,
we do the check in test-lib.sh, so that we don't need to repeat the test
in many scripts.
To check for 'ln -s' failures, you can use a FAT partition on Linux:
$ mkdosfs -C git-on-fat
1000000
$ sudo mount -o loop,uid=j6t,gid=users,shortname=winnt git-on-fat /mnt
Clone git to /mnt and
$ GIT_SKIP_TESTS='t0001.1[34] t0010 t1301 t403[34] t4129.[47] t5701.7
t7701.3 t9100 t9101.26 t9119 t9124.[67] t9200.10 t9600.6' \
make test
(These additionally skipped tests depend on POSIX permissions that FAT on
Linux does not provide.)
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Tue, 24 Feb 2009 20:13:39 +0000 (21:13 +0100)]
t9100, t9129: Use prerequisite tags for UTF-8 tests
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Wed, 25 Feb 2009 21:34:34 +0000 (22:34 +0100)]
t5302: Use prerequisite tags to skip 64-bit offset tests
The effects of this patch can be tested on Linux by commenting out
#define _FILE_OFFSET_BITS 64
in git-compat-util.h.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Fri, 27 Feb 2009 21:20:57 +0000 (22:20 +0100)]
Skip tests that fail if the executable bit is not handled by the filesystem
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Thu, 26 Feb 2009 22:09:00 +0000 (23:09 +0100)]
t3600: Use test prerequisite tags
There are two prerequisites:
- The filesystem supports names with tabs or new-lines.
- Files cannot be removed if their containing directory is read-only.
Previously, whether these preconditions are satisified was tested inside
test_expect_success. We move these tests outside because, strictly
speaking, they are not part of the tests.
Signed-off-by: Johannes Sixt <redacted>
Junio C Hamano [Sun, 22 Mar 2009 06:24:46 +0000 (23:24 -0700)]
Merge branch 'dm/maint-docco'
* dm/maint-docco:
Documentation: reword example text in git-bisect.txt.
Documentation: reworded the "Description" section of git-bisect.txt.
Documentation: minor grammatical fixes in git-branch.txt.
Documentation: minor grammatical fixes in git-blame.txt.
Documentation: reword the "Description" section of git-bisect.txt.
Documentation: minor grammatical fixes in git-archive.txt.
Junio C Hamano [Sun, 22 Mar 2009 06:24:40 +0000 (23:24 -0700)]
Merge branch 'mg/test-installed'
* mg/test-installed:
test-lib.sh: Allow running the test suite against installed git
test-lib.sh: Test for presence of git-init in the right path.
Junio C Hamano [Sun, 22 Mar 2009 06:24:11 +0000 (23:24 -0700)]
Sync with maint
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 22 Mar 2009 06:21:15 +0000 (23:21 -0700)]
Update draft release notes to 1.6.2.2
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Tue, 17 Mar 2009 09:03:19 +0000 (05:03 -0400)]
ls-files: require worktree when --deleted is given
The code will end up calling lstat() to check whether the
file still exists; obviously this doesn't work if we're not
in the worktree.
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
René Scharfe [Mon, 16 Mar 2009 18:38:42 +0000 (19:38 +0100)]
pickaxe: count regex matches only once
When --pickaxe-regex is used, forward past the end of matches instead of
advancing to the byte after their start. This way matches count only
once, even if the regular expression matches their tail -- like in the
fixed-string fork of the code.
E.g.: /.*/ used to count the number of bytes instead of the number of
lines. /aa/ resulted in a count of two in "aaa" instead of one.
Also document the fact that regexec() needs a NUL-terminated string as
its second argument by adding an assert().
Signed-off-by: Rene Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 22 Mar 2009 06:10:42 +0000 (23:10 -0700)]
Merge branch 'maint-1.6.1' into maint
* maint-1.6.1:
Junio C Hamano [Sun, 22 Mar 2009 06:09:21 +0000 (23:09 -0700)]
Merge branch 'tr/maint-1.6.0-send-email-irt' into maint
* tr/maint-1.6.0-send-email-irt:
send-email: test --no-thread --in-reply-to combination
send-email: respect in-reply-to regardless of threading
Conflicts:
t/t9001-send-email.sh
Junio C Hamano [Sun, 22 Mar 2009 06:08:27 +0000 (23:08 -0700)]
Merge branch 'mg/maint-submodule-normalize-path' into maint
* mg/maint-submodule-normalize-path:
git submodule: Fix adding of submodules at paths with ./, .. and //
git submodule: Add test cases for git submodule add
Junio C Hamano [Sun, 22 Mar 2009 06:08:21 +0000 (23:08 -0700)]
Merge branch 'rs/memmem' into maint
* rs/memmem:
optimize compat/ memmem()
diffcore-pickaxe: use memmem()
Junio C Hamano [Sun, 22 Mar 2009 06:03:17 +0000 (23:03 -0700)]
Merge branch 'js/rsync-local' into maint
* js/rsync-local:
rsync transport: allow local paths, and fix tests
Junio C Hamano [Sun, 22 Mar 2009 06:02:55 +0000 (23:02 -0700)]
Merge branch 'db/maint-missing-origin' into maint
* db/maint-missing-origin:
Remove total confusion from git-fetch and git-push
Give error when no remote is configured
Junio C Hamano [Sun, 22 Mar 2009 06:02:47 +0000 (23:02 -0700)]
Merge branch 'jc/maint-1.6.0-read-tree-overlay' into maint
* jc/maint-1.6.0-read-tree-overlay:
read-tree A B C: do not create a bogus index and do not segfault
Junio C Hamano [Sun, 22 Mar 2009 05:59:19 +0000 (22:59 -0700)]
Merge branch 'js/maint-1.6.0-path-normalize' into maint-1.6.1
* js/maint-1.6.0-path-normalize:
Remove unused normalize_absolute_path()
Test and fix normalize_path_copy()
Fix GIT_CEILING_DIRECTORIES on Windows
Move sanitary_path_copy() to path.c and rename it to normalize_path_copy()
Make test-path-utils more robust against incorrect use
Junio C Hamano [Sun, 22 Mar 2009 05:53:36 +0000 (22:53 -0700)]
Merge branch 'jc/maint-1.6.0-pack-directory' into maint-1.6.1
* jc/maint-1.6.0-pack-directory:
Fix odb_mkstemp() on AIX
Make sure objects/pack exists before creating a new pack
Conflicts:
wrapper.c
Stephen Boyd [Sun, 22 Mar 2009 04:32:43 +0000 (21:32 -0700)]
format-patch: --numbered-files and --stdout aren't mutually exclusive
For example:
git format-patch --numbered-files --stdout --attach HEAD~~
will create two messages with files 1 and 2 attached respectively.
Without --attach/--inline but with --stdout, --numbered-files option
can be simply ignored, because we are not creating any file ourselves.
Signed-off-by: Stephen Boyd <redacted>
Signed-off-by: Junio C Hamano <redacted>
Brandon Casey [Sat, 21 Mar 2009 22:26:11 +0000 (17:26 -0500)]
pack-objects: don't loosen objects available in alternate or kept packs
If pack-objects is called with the --unpack-unreachable option then it
will unpack (i.e. loosen) all unreferenced objects from local not-kept
packs, including those that also exist in packs residing in an alternate
object database or a locally kept pack. The only user of this option is
git-repack.
In this case, repack will follow the call to pack-objects with a call to
prune-packed, which will delete these newly loosened objects, making the
act of loosening a waste of time. The unnecessary loosening can be
avoided by checking whether an object exists in a non-local pack or a
locally kept pack before loosening it.
This fixes the 'local packed unreachable obs that exist in alternate ODB
are not loosened' test in t7700.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Johannes Sixt [Sat, 21 Mar 2009 22:21:18 +0000 (23:21 +0100)]
Propagate --exec-path setting to external commands via GIT_EXEC_PATH
Let PATH0=$PATH that was set before the invocation.
Let /foo be a build directory.
Let /pfx be the installation prefix.
Let pfxexecpath=/pfx/libexec/git-core.
The following is going on when 'git --exec-path=/foo gc' is invoked:
1. git sets PATH=/foo:$PATH0 using the path from --exec-path
2. gc execs 'git repack' (note: no dash).
3. Since there is a git in /foo (it's a build directory), /foo/git is
taken.
4. No explicit exec-path is set this time, hence, this secondary git sets
PATH=$pfxexecpath:/foo:$PATH
5. Since 'repack' is not a built-in, execv_dashed_external execs
'git-repack' (note: dash).
6. There is a $pfxexecpath/git-repack, and it is taken.
7. This git-repack runs 'git pack-objects' (note: no dash).
8. There is no git in $pfxexecpath, but there is one in /foo. Hence,
/foo/git is run.
9. pack-objects is a builtin, hence, in effect /foo/git-pack-objects
is run.
As you can see, the way in which we previously set the PATH allowed to
mix gits of different vintage. By setting GIT_EXEC_PATH when --exec-path
was given on the command line, we reduce the confusion.
Signed-off-by: Johannes Sixt <redacted>
Signed-off-by: Junio C Hamano <redacted>
Brandon Casey [Sat, 21 Mar 2009 22:25:30 +0000 (17:25 -0500)]
t7700: demonstrate repack flaw which may loosen objects unnecessarily
If an unreferenced object exists in both a local pack and in either a pack
residing in an alternate object database or a local kept pack, then the
pack-objects call made by repack will loosen that object only to have it
immediately pruned by repack's call to prune-packed.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Brandon Casey [Sun, 22 Mar 2009 00:09:17 +0000 (19:09 -0500)]
git-branch: display "was sha1" on branch deletion rather than just "sha1"
Make it more pleasant to read about a branch deletion by adding "was".
Jeff King suggested this, and I ignored it. He was right.
Update t3200 test again to match the change in output.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Johannes Sixt [Sun, 1 Mar 2009 20:04:46 +0000 (21:04 +0100)]
test-lib: Infrastructure to test and check for prerequisites
Some tests can be run only if a particular prerequisite is available. For
example, some tests require that an UTF-8 locale is available. Here we
introduce functions that are used in this way:
1. Insert code that checks whether the prerequisite is available. If it is,
call test_set_prereq with an arbitrary tag name that subsequently can be
used to check for the prerequisite:
case $LANG in
*.utf-8)
test_set_prereq UTF8
;;
esac
2. In the calls to test_expect_success pass the tag name:
test_expect_success UTF8 '...description...' '...tests...'
3. There is an auxiliary predicate that can be used anywhere to test for
a prerequisite explicitly:
if test_have_prereq UTF8
then
...code to be skipped if prerequisite is not available...
fi
Signed-off-by: Johannes Sixt <redacted>
Heiko Voigt [Wed, 18 Mar 2009 17:33:41 +0000 (18:33 +0100)]
cvsimport: extend testcase about patchset order to contain branches
This makes sure that timestamps and ordering on branches is not influenced
by a fix for cvsps.
The test extension does not deal which patchset correction on branches it
only verifes that branches are basically handled as before.
Signed-off-by: Heiko Voigt <redacted>
Signed-off-by: Junio C Hamano <redacted>
Heiko Voigt [Wed, 18 Mar 2009 17:33:34 +0000 (18:33 +0100)]
cvsimport: add test illustrating a bug in cvsps
Some cvs repositories may have time deviations in their recorded commits.
This is a test for one of such cases. These kind of repositories can happen
if the system time of cvs clients is not fully synchronised.
Consider the following sequence of events:
* client A commits file a r1.1
* client A commits file a r1.2, b r1.1
* client B commits file b r1.2 using the same timestamp as a r1.1
This can be resolved but due to cvsps ordering its patchsets solely based
on the timestamp. It only takes revision odering into account if there
is no difference in the timestamp.
I hit this bug when importing from a real repository which was originally
converted from another rcs based scm. Other import tools can handle this
correctly, e.g. parsecvs.
Signed-off-by: Heiko Voigt <redacted>
Signed-off-by: Junio C Hamano <redacted>
Shawn O. Pearce [Fri, 20 Mar 2009 21:44:48 +0000 (14:44 -0700)]
Merge branch 'maint'
Jens Lehmann [Fri, 20 Mar 2009 07:48:55 +0000 (08:48 +0100)]
git-gui: Fix merge conflict display error when filename contains spaces
When a merge conflict occurs in a file with spaces in the filename,
git-gui showed wrongly "LOCAL: deleted".
Signed-off-by: Jens Lehmann <redacted>
Signed-off-by: Shawn O. Pearce <redacted>
Junio C Hamano [Wed, 11 Mar 2009 20:13:38 +0000 (13:13 -0700)]
http tests: Darwin is not that special
We have PidFile definition in the file already, and we have added
necessary LoadModule for log_config_module recently.
This patch will end up giving LockFile to everybody not just limited to
Darwin, but why not?
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 20 Mar 2009 21:31:15 +0000 (14:31 -0700)]
Merge branch 'maint'
* maint:
doc: clarify how -S works
Junio C Hamano [Fri, 20 Mar 2009 21:30:51 +0000 (14:30 -0700)]
Merge branch 'mv/parseopt-ls-files'
* mv/parseopt-ls-files:
ls-files: fix broken --no-empty-directory
t3000: use test_cmp instead of diff
parse-opt: migrate builtin-ls-files.
Turn the flags in struct dir_struct into a single variable
Conflicts:
builtin-ls-files.c
t/t3000-ls-files-others.sh
Junio C Hamano [Fri, 20 Mar 2009 21:30:08 +0000 (14:30 -0700)]
Merge branch 'bw/autoconf'
* bw/autoconf:
configure: rework pthread handling to allow for user defined flags
configure: make iconv tests aware of user arguments
configure: asciidoc version test cleanup
configure: wrap some library tests with GIT_STASH_FLAGS
configure: add macros to stash FLAG variables
configure: reorganize flow of argument checks
configure: ensure settings from user are also usable in the script
Junio C Hamano [Fri, 20 Mar 2009 21:30:00 +0000 (14:30 -0700)]
Merge branch 'xx/db-refspec-vs-js-remote'
* xx/db-refspec-vs-js-remote:
Support '*' in the middle of a refspec
Keep '*' in pattern refspecs
Use the matching function to generate the match results
Use a single function to match names against patterns
Make clone parse the default refspec with the normal code
Junio C Hamano [Fri, 20 Mar 2009 21:29:49 +0000 (14:29 -0700)]
Merge branch 'jc/clone-branch-rebase'
* jc/clone-branch-rebase:
Improve "git branch --tracking" output
Make git-clone respect branch.autosetuprebase
Conflicts:
builtin-clone.c
Junio C Hamano [Fri, 20 Mar 2009 21:29:10 +0000 (14:29 -0700)]
Merge branch 'js/rebase-i-opt'
* js/rebase-i-opt:
rebase -i: avoid 'git reset' when possible
Junio C Hamano [Fri, 20 Mar 2009 21:29:03 +0000 (14:29 -0700)]
Merge branch 'fc/parseopt-config'
* fc/parseopt-config:
config: test for --replace-all with one argument and fix documentation.
config: set help text for --bool-or-int
git config: don't allow --get-color* and variable type
git config: don't allow extra arguments for -e or -l.
git config: don't allow multiple variable types
git config: don't allow multiple config file locations
git config: reorganize to use parseopt
git config: reorganize get_color*
git config: trivial rename in preparation for parseopt
git_config(): not having a per-repo config file is not an error
Brandon Casey [Fri, 20 Mar 2009 03:47:54 +0000 (22:47 -0500)]
Remove --kept-pack-only option and associated infrastructure
This option to pack-objects/rev-list was created to improve the -A and -a
options of repack. It was found to be lacking in that it did not provide
the ability to differentiate between local and non-local kept packs, and
found to be unnecessary since objects residing in local kept packs can be
filtered out by the --honor-pack-keep option.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Brandon Casey [Fri, 20 Mar 2009 03:47:52 +0000 (22:47 -0500)]
pack-objects: only repack or loosen objects residing in "local" packs
These two features were invented for use by repack when repack will delete
the local packs that have been made redundant. The packs accessible
through alternates are not deleted by repack, so the objects contained in
them are still accessible after the local packs are deleted. They do not
need to be repacked into the new pack or loosened. For the case of
loosening they would immediately be deleted by the subsequent prune-packed
that is called by repack anyway.
This fixes the test
'packed unreachable obs in alternate ODB are not loosened' in t7700.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Brandon Casey [Fri, 20 Mar 2009 03:47:51 +0000 (22:47 -0500)]
git-repack.sh: don't use --kept-pack-only option to pack-objects
The --kept-pack-only option to pack-objects treats all kept packs as equal.
This results in objects that reside in an alternate pack that has a .keep
file, not being packed into a newly created pack when the user specifies the
-a option to repack. Since the user may not have any control over the
alternate database, git should not refrain from repacking those objects
even though they are in a pack with a .keep file.
This fixes the 'packed obs in alternate ODB kept pack are repacked' test in
t7700.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Brandon Casey [Fri, 20 Mar 2009 03:47:50 +0000 (22:47 -0500)]
t7700-repack: add two new tests demonstrating repacking flaws
1) The new --kept-pack-only mechansim of rev-list/pack-objects has
replaced --unpacked=. This new mechansim does not operate solely on
"local" packs now. The result is that objects residing in an alternate
pack which has a .keep file will not be repacked with repack -a.
This flaw is only apparent when a commit object is the one residing in
an alternate kept pack.
2) The 'repack unpacked objects' and 'loosen unpacked objects' mechanisms
of pack-objects, i.e. --keep-unreachable and --unpack-unreachable,
now do not operate solely on local packs. The --keep-unreachable
option no longer has any callers, but --unpack-unreachable is used when
repack is called with '-A -d' and the local repo has existing packs.
In this case, objects residing in alternate, not-kept packs will be
loosened, and then immediately deleted by repack's call to
prune-packed.
The test must manually call pack-objects to avoid the call to
prune-packed that is made by repack when -d is used.
Signed-off-by: Brandon Casey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kristian Amlie [Fri, 20 Mar 2009 09:32:09 +0000 (10:32 +0100)]
Add a test for checking whether gitattributes is honored by checkout.
The original bug will not honor new entries in gitattributes if they
are changed in the same checkout as the files they affect.
It will also keep using .gitattributes, even if it is deleted in the
same commit as the files it affects.
Signed-off-by: Junio C Hamano <redacted>
Alex Riesen [Thu, 19 Mar 2009 22:27:32 +0000 (23:27 +0100)]
Microoptimize strbuf_cmp
It can be less object code and may be even faster, even if at the
moment there is no callers to take an advantage of that. This
implementation can be trivially made inlinable later.
Signed-off-by: Alex Riesen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Alex Riesen [Thu, 19 Mar 2009 22:54:29 +0000 (23:54 +0100)]
Produce a nicer output in case of sha1_object_info failures in ls-tree -l
An error message is already printed by sha1_object_info itself, and
the failed entries are additionally marked in the listing.
Signed-off-by: Alex Riesen <redacted>
Signed-off-by: Junio C Hamano <redacted>
David J. Mellor [Fri, 20 Mar 2009 03:35:34 +0000 (20:35 -0700)]
Documentation: reword example text in git-bisect.txt.
Avoid splitting sentences across examples of command usage.
Signed-off-by: David J. Mellor <redacted>
Signed-off-by: Junio C Hamano <redacted>
Giuseppe Bilotta [Fri, 20 Mar 2009 09:57:50 +0000 (10:57 +0100)]
import-tars: separate author from committer
The import-tars script is typically employed to (re)create the past
history of a project from stored tars. Although assigning authorship in
these cases can be a somewhat arbitrary process, it makes sense to set
the author to whoever created the tars in the first place (if it's
known), and (s)he can in general be different from the committer
(whoever is running the script).
Implement this by having separate author and committer data, making them
settable from the usual GIT_* environment variables.
Acked-by: Shawn O. Pearce <redacted>
Signed-off-by: Junio C Hamano <redacted>
Jeff King [Fri, 20 Mar 2009 06:00:43 +0000 (02:00 -0400)]
make oneline reflog dates more consistent with multiline format
The multiline reflog format (e.g., as shown by "git log -g")
will show HEAD@{<date>} rather than HEAD@{<count>} in two
situations:
1. If the user gave branch@{<date>} syntax to specify the
reflog
2. If the user gave a --date=<format> specifier
It uses the "normal" date format in case 1, and the
user-specified format in case 2.
The oneline reflog format (e.g., "git reflog show" or "git
log -g --oneline") will show the date in the same two
circumstances. However, it _always_ shows the date as a
relative date, and it always ignores the timezone.
In case 2, it seems ridiculous to trigger the date but use a
format totally different from what the user requested.
For case 1, it is arguable that the user might want to see
the relative date by default; however, the multiline version
shows the normal format.
This patch does three things:
- refactors the "relative_date" parameter to
show_reflog_message to be an actual date_mode enum,
since this is how it is used (it is passed to show_date)
- uses the passed date_mode parameter in the oneline
format (making it consistent with the multiline format)
- does not ignore the timezone parameter in oneline mode
Signed-off-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 19 Mar 2009 23:00:15 +0000 (16:00 -0700)]
Merge branch 'js/windows-tests'
* js/windows-tests:
t5602: Work around path mangling on MSYS
t5300, t5302, t5303: Do not use /dev/zero
t2200, t7004: Avoid glob pattern that also matches files
t7300: fix clean up on Windows
test-lib: Introduce test_chmod and use it instead of update-index --chmod
test-lib: Simplify test counting.
test-lib: Replace uses of $(expr ...) by POSIX shell features.
Call 'say' outside test_expect_success
test suite: Use 'say' to say something instead of 'test_expect_success'
t9400, t9401: Do not force hard-linked clone
Johannes Sixt [Wed, 4 Mar 2009 18:40:27 +0000 (19:40 +0100)]
t0050: Check whether git init detected symbolic link support correctly
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Fri, 13 Mar 2009 22:35:24 +0000 (23:35 +0100)]
Tests on Windows: $(pwd) must return Windows-style paths
Many tests pass $(pwd) in some form to git and later test that the output
of git contains the correct value of $(pwd). For example, the test of
'git remote show' sets up a remote that contains $(pwd) and then the
expected result must contain $(pwd).
Again, MSYS-bash's path mangling kicks in: Plain $(pwd) uses the MSYS style
absolute path /c/path/to/git. The test case would write this name into
the 'expect' file. But when git is invoked, MSYS-bash converts this name to
the Windows style path c:/path/to/git, and git would produce this form in
the result; the test would fail.
We fix this by passing -W to bash's pwd that produces the Windows-style
path.
There are a two cases that need an accompanying change:
- In t1504 the value of $(pwd) becomes part of a path list. In this case,
the lone 'c' in something like /foo:c:/path/to/git:/bar inhibits
MSYS-bashes path mangling; IOW in this case we want the /c/path/to/git
form to allow path mangling. We use $PWD instead of $(pwd), which always
has the latter form.
- In t6200, $(pwd) - the Windows style path - must be used to construct the
expected result because that is the path form that git sees. (The change
in the test itself is just for consistency: 'git fetch' always sees the
Windows-style path, with or without the change.)
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Sat, 14 Mar 2009 21:21:27 +0000 (22:21 +0100)]
test-lib: Work around missing sum on Windows
t1002-read-tree-m-u-2way.sh uses 'sum', but it does not rely on the exact
form of the sum, only that it is a hash digest. Therefore, we can sneak
in 'md5sum' under the name 'sum'.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Wed, 11 Mar 2009 20:17:26 +0000 (21:17 +0100)]
test-lib: Work around incompatible sort and find on Windows
If the PATH lists the Windows system directories before the MSYS
directories, Windows's own incompatible sort and find commands would be
picked up. We implement these commands as functions and call the real
tools by absolute path.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Thu, 12 Mar 2009 19:32:43 +0000 (20:32 +0100)]
t5602: Work around path mangling on MSYS
MSYS's bash rewrites /something/bin/... into a Windows path that looks like
c:/msysgit/something/bin/... before git sees it. But later the test case
verifies that the path was used and compares it to the unmangled version.
This fails, of course. This make the path relative so that the path
mangling is not triggered.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Mon, 17 Nov 2008 08:21:30 +0000 (09:21 +0100)]
t5300, t5302, t5303: Do not use /dev/zero
We do not have /dev/zero on Windows. This replaces it by data generated
with printf, perl, or echo. Most of the cases do not depend on that the
data is a stream of zero bytes, so we use something printable; nor is an
unlimited stream of data needed, so we produce only as many bytes as the
test cases need.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Mon, 9 Feb 2009 09:24:51 +0000 (10:24 +0100)]
t2200, t7004: Avoid glob pattern that also matches files
On Windows, there is an unfortunate interaction between the MSYS bash and
git's command line processing:
- Since Windows's CMD does not do the wildcard expansion, but passes
arguments like path* through to the programs, the programs must do the
expansion themselves. This happens in the startup code before main() is
entered.
- bash, however, passes the argument "path*" to git, assuming that git will
see the unquoted word unchanged as a single argument.
But actually git expands the unquoted word before main() is entered.
In t2200, not all names that the test case is interested in exist as files
at the time when 'git ls-files' is invoked. git expands "path?" to only
the subset of files the exist, and only that subset was listed, so that the
test failed. We now list all interesting paths explicitly.
In t7004, git exanded the pattern "*a*" to "actual" (the file that stdout
was redirected to), which is not what the was tested for. We fix it by
renaming the output file (and removing any existing files matching *a*).
This was originally fixed by Johannes Schindelin.
Signed-off-by: Johannes Sixt <redacted>
Johannes Schindelin [Wed, 11 Mar 2009 16:58:32 +0000 (17:58 +0100)]
t7300: fix clean up on Windows
On Windows, you cannot remove files that are in use, not even with
'rm -rf'. So we need to run 'exec <foo/bar' inside a subshell lest
removing the whole test repository fail.
Signed-off-by: Johannes Schindelin <redacted>
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Sat, 28 Feb 2009 20:12:57 +0000 (21:12 +0100)]
test-lib: Introduce test_chmod and use it instead of update-index --chmod
This function replaces sequences of 'chmod +x' and 'git update-index
--chmod=+x' in the test suite, whose purpose is to help filesystems
that need core.filemode=false. Two places where only 'chmod +x' was used
we also use this new function.
The function calls 'git update-index --chmod' without checking
core.filemode (unlike some of the call sites did). We do this because the
call sites *expect* that the executable bit ends up in the index (ie. it
is not the purpose of the call sites to *test* whether git treats
'chmod +x' and 'update-index --chmod=+x' correctly). Therefore, on
filesystems with core.filemode=true the 'git update-index --chmod' is a
no-op.
The function uses --add with update-index to help one call site in
t6031-merge-recursive. It makes no difference for the other callers.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Thu, 5 Feb 2009 20:20:56 +0000 (21:20 +0100)]
test-lib: Simplify test counting.
Since the test case counter was incremented very late, there were a few
users of the counter had to do their own incrementing. Now we increment it
early and simplify these users.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Thu, 5 Feb 2009 19:59:27 +0000 (20:59 +0100)]
test-lib: Replace uses of $(expr ...) by POSIX shell features.
In particular:
- Test case counting can be achieved by arithmetic expansion.
- The name of the test, e.g. t1234, can be computed with ${0%%} and ${0##}.
Signed-off-by: Johannes Sixt <redacted>
Johannes Sixt [Tue, 17 Mar 2009 21:45:22 +0000 (22:45 +0100)]
Call 'say' outside test_expect_success
There were some uses of 'say' inside test_expect_success. But if the tests
were not run in verbose mode, this message went to /dev/null. Pull them out
of test_expect_success.
Signed-off-by: Johannes Sixt <redacted>