Code

git.git
15 years agogitweb: channel image in rss feed
Giuseppe Bilotta [Mon, 26 Jan 2009 11:50:11 +0000 (12:50 +0100)]
gitweb: channel image in rss feed

Define the channel image for the rss feed when the logo or favicon are
defined, preferring the former to the latter. As suggested in the RSS
2.0 specifications, the image's title and link as set to the same as the
channel's.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: Make 'configure --with-expat=path' actually work
Serge van den Boom [Wed, 28 Jan 2009 20:43:57 +0000 (21:43 +0100)]
Makefile: Make 'configure --with-expat=path' actually work

While the configure script sets the EXPATDIR environment variable to
whatever value was passed to its option --with-expat as the prefix of
the location of the expat library and headers, the Makefile ignored it.
This patch fixes this bug.

Signed-off-by: Serge van den Boom <svdb@stack.nl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-am: minor cleanups
Jay Soffian [Wed, 28 Jan 2009 15:03:10 +0000 (10:03 -0500)]
git-am: minor cleanups

Update usage statement to remove a no-longer supported option, and to hide two
options (one a no-op, one internal) unless --help-all is used.

Use "test -t 0" instead of "tty -s" to detect when stdin is a terminal. (test
-t 0 is used elsewhere in git-am and in other git shell scripts, tty -s is
not, and appears to be deprecated by POSIX)

Use "test ..." instead of "[ ... ]" and "die <msg>" instead of "echo <msg>
>&2; exit 1" to be consistent with rest of script.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoWindows: Fix intermittent failures of t7701
Johannes Sixt [Wed, 28 Jan 2009 09:52:26 +0000 (10:52 +0100)]
Windows: Fix intermittent failures of t7701

The last test case checks whether unpacked objects receive the time stamp
of the pack file. Due to different implementations of stat(2) by MSYS and
our version in compat/mingw.c, the test fails in about half of the test
runs.

Note the following facts:

- The test uses perl's -M operator to compare the time stamps. Since we
  depend on MSYS perl, the result of this operator is based on MSYS's
  implementation of the stat(2) call.

- NTFS on Windows records fractional seconds.

- The MSYS implementation of stat(2) *rounds* fractional seconds to full
  seconds instead of truncating them. This becomes obvious by comparing the
  modification times reported by 'ls --full-time $f' and 'stat $f' for
  various files $f.

- Our implementation of stat(2) in compat/mingw.c *truncates* to full
  seconds.

The consequence of this is that

- add_packed_git() picks up a truncated whole second modification time
  from the pack file time stamp, which is then used for the loose objects,
  while the pack file retains its time stamp in fractional seconds;

- but the test case compared the pack file's rounded modification times
  to the loose objects' truncated modification times.

And half of the time the rounded modification time is not the same as its
truncated modification time.

The fix is that we replace perl by 'test-chmtime -v +0', which prints the
truncated whole-second mtime without modifying it.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Wed, 28 Jan 2009 08:36:52 +0000 (00:36 -0800)]
Merge branch 'maint'

* maint:
  send-pack: do not send unknown object name from ".have" to pack-objects
  test-path-utils: Fix off by one, found by valgrind
  get_sha1_basic(): fix invalid memory access, found by valgrind

15 years agosend-pack: do not send unknown object name from ".have" to pack-objects
Junio C Hamano [Wed, 28 Jan 2009 04:21:31 +0000 (20:21 -0800)]
send-pack: do not send unknown object name from ".have" to pack-objects

v1.6.1 introduced ".have" extension to the protocol to allow the receiving
side to advertise objects that are reachable from refs in the repositories
it borrows from.  This was meant to be used by the sending side to avoid
sending such objects; they are already available through the alternates
mechanism.

The client side implementation in v1.6.1, which was introduced with
40c155f (push: prepare sender to receive extended ref information from the
receiver, 2008-09-09) aka v1.6.1-rc1~203^2~1, were faulty in that it did
not consider the possiblity that the repository receiver borrows from
might have objects it does not know about.

This fixes it by refraining from passing missing commits to underlying
pack-objects.  Revision machinery may need to be tightened further to
treat missing uninteresting objects as non-error events, but this is an
obvious and safe fix for a maintenance release that is almost good enough.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Tue, 27 Jan 2009 23:23:46 +0000 (15:23 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  test-path-utils: Fix off by one, found by valgrind
  get_sha1_basic(): fix invalid memory access, found by valgrind

15 years agotest-path-utils: Fix off by one, found by valgrind
Johannes Schindelin [Tue, 27 Jan 2009 23:07:36 +0000 (00:07 +0100)]
test-path-utils: Fix off by one, found by valgrind

When normalizing an absolute path, we might have to add a slash _and_ a
NUL to the buffer, so the buffer was one too small.

Let's just future proof the code and alloc PATH_MAX + 1 bytes.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoget_sha1_basic(): fix invalid memory access, found by valgrind
Johannes Schindelin [Tue, 27 Jan 2009 23:07:46 +0000 (00:07 +0100)]
get_sha1_basic(): fix invalid memory access, found by valgrind

When get_sha1_basic() is passed a buffer of len 0, it should not
check if buf[len-1] is a curly bracket.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotests: Avoid single-shot environment export for shell function invocation
Junio C Hamano [Tue, 27 Jan 2009 05:13:00 +0000 (21:13 -0800)]
tests: Avoid single-shot environment export for shell function invocation

Some shells have issues with a single-shot environment variable export
when invoking a shell function.  This fixes the ones I found that invoke
test_must_fail that way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agorebase -i: correctly remember --root flag across --continue
Junio C Hamano [Mon, 26 Jan 2009 09:05:22 +0000 (10:05 +0100)]
rebase -i: correctly remember --root flag across --continue

d911d14 (rebase -i: learn to rebase root commit, 2009-01-02) tried to
remember the --root flag across a merge conflict in a broken way.
Introduce a flag file $DOTEST/rebase-root to fix and clarify.

While at it, also make sure $UPSTREAM is always initialized to guard
against existing values in the environment.

[tr: added tests]

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomake: Remove -pthread on Darwin (it is included by cstdlib).
Ted Pavlic [Mon, 26 Jan 2009 19:03:59 +0000 (14:03 -0500)]
make: Remove -pthread on Darwin (it is included by cstdlib).

As discussed in

http://lists.apple.com/archives/Unix-porting/2005/Mar/msg00019.html

the Mac OS X C standard library is always thread safe and always
includes the pthread library. So explicitly using -pthread causes an
'unrecognized option' compiler warning.

This patch clears PTHREAD_LIBS if Darwin is detected.

Signed-off-by: Ted Pavlic <ted@tedpavlic.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMention "local convention" rule in the CodingGuidelines
Nanako Shiraishi [Mon, 26 Jan 2009 08:32:22 +0000 (17:32 +0900)]
Mention "local convention" rule in the CodingGuidelines

The document suggests to imitate the existing code, but didn't
say which existing code it should imitate. This clarifies.

Signed-off-by: しらいしななこ <nanako3@lavabit.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Mon, 26 Jan 2009 06:27:52 +0000 (22:27 -0800)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: Add test for --ignore-paths parameter
  git-svn: documented --ignore-paths
  git-svn: add --ignore-paths option for fetching
  git-svn: fix memory leak when checking for empty symlinks

15 years agorebase -i --root: fix check for number of arguments
Johannes Schindelin [Sun, 25 Jan 2009 23:32:13 +0000 (00:32 +0100)]
rebase -i --root: fix check for number of arguments

If we are not rebasing with --root, then $# can only be either 1 (base)
or 2 (base and the name of the branch to be rebased).

If we are rebasing with --root, then it is Ok if $# is 0 (rebase the
current branch down to everything) or 1 (rebase the named branch down to
everything).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogittutorial: remove misleading note
Miklos Vajna [Fri, 23 Jan 2009 18:02:29 +0000 (19:02 +0100)]
gittutorial: remove misleading note

In the tutorial Alice initializes the repository, and Bob clones it. So
Bob can just do a 'git pull', but Alice will need 'git pull <url>
<branch>'.

The note suggested that the branch parameter is not necessary, which is
no longer true these days.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'kb/lstat-cache'
Junio C Hamano [Mon, 26 Jan 2009 01:13:34 +0000 (17:13 -0800)]
Merge branch 'kb/lstat-cache'

* kb/lstat-cache:
  lstat_cache(): introduce clear_lstat_cache() function
  lstat_cache(): introduce invalidate_lstat_cache() function
  lstat_cache(): introduce has_dirs_only_path() function
  lstat_cache(): introduce has_symlink_or_noent_leading_path() function
  lstat_cache(): more cache effective symlink/directory detection

15 years agoMerge branch 'js/diff-color-words'
Junio C Hamano [Mon, 26 Jan 2009 01:13:29 +0000 (17:13 -0800)]
Merge branch 'js/diff-color-words'

* js/diff-color-words:
  Change the spelling of "wordregex".
  color-words: Support diff.wordregex config option
  color-words: make regex configurable via attributes
  color-words: expand docs with precise semantics
  color-words: enable REG_NEWLINE to help user
  color-words: take an optional regular expression describing words
  color-words: change algorithm to allow for 0-character word boundaries
  color-words: refactor word splitting and use ALLOC_GROW()
  Add color_fwrite_lines(), a function coloring each line individually

15 years agoMerge branch 'cb/add-pathspec'
Junio C Hamano [Mon, 26 Jan 2009 01:13:11 +0000 (17:13 -0800)]
Merge branch 'cb/add-pathspec'

* cb/add-pathspec:
  remove pathspec_match, use match_pathspec instead
  clean up pathspec matching

15 years agoMerge branch 'js/maint-all-implies-HEAD'
Junio C Hamano [Mon, 26 Jan 2009 01:13:02 +0000 (17:13 -0800)]
Merge branch 'js/maint-all-implies-HEAD'

* js/maint-all-implies-HEAD:
  bundle: allow the same ref to be given more than once
  revision walker: include a detached HEAD in --all

15 years agoMerge branch 'sr/clone-empty'
Junio C Hamano [Mon, 26 Jan 2009 01:11:30 +0000 (17:11 -0800)]
Merge branch 'sr/clone-empty'

* sr/clone-empty:
  Allow cloning an empty repository

15 years agodiff-options.txt: Fix asciidoc markup issue
Teemu Likonen [Sun, 25 Jan 2009 12:20:22 +0000 (14:20 +0200)]
diff-options.txt: Fix asciidoc markup issue

Must be "--patience::", not "--patience:".

Signed-off-by: Teemu Likonen <tlikonen@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-svn: Add test for --ignore-paths parameter
Vitaly \"_Vi\" Shukela [Sun, 25 Jan 2009 22:21:42 +0000 (00:21 +0200)]
git-svn: Add test for --ignore-paths parameter

Added a test for this option, similar to (and based on) t9133 about
ignorance of .git directories

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: replaced 'echo -e' with printf so it works on POSIX shells]
[ew: added Vitaly to copyright even though it's based on my test]

15 years agoSync with 1.6.1.1
Junio C Hamano [Mon, 26 Jan 2009 00:30:13 +0000 (16:30 -0800)]
Sync with 1.6.1.1

15 years agogit-svn: documented --ignore-paths
Vitaly \"_Vi\" Shukela [Sun, 25 Jan 2009 22:21:41 +0000 (00:21 +0200)]
git-svn: documented --ignore-paths

Documented --ignore-paths option of git-svn to inform users about
the feature and provide some examples.

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: trailing whitespace removed]

15 years agogit-svn: add --ignore-paths option for fetching
Vitaly \"_Vi\" Shukela [Sun, 25 Jan 2009 22:21:40 +0000 (00:21 +0200)]
git-svn: add --ignore-paths option for fetching

This will be useful when somebody want to checkout something partially from
repository with some non-standart layout or exclude some files from it.
Example: repository has structure /module-{a,b,c}/{trunk,branches,tags}/...
Modules are interdependent, and you want it to be single repostory (to commit
to all modules simultaneously and view complete history), but do not want
branches and tags be checked out into working copy.
Other use case is excluding some large blobs.

The quirk for now is that user must specify this option every fetch/rebase;
in other case he may get extra files or "file not found" errors. It may be
will be resolved by adding regular expression to .git/config into
[svn-remote ...] to make it persistent.

Signed-off-by: Vitaly "_Vi" Shukela <public_vi@tut.by>
Acked-by: Eric Wong <normalperson@yhbt.net>
[ew: replaced 4-space indent with tabs]
[ew: prefixed $ignore_regex with an underscore to be consistent
     with other globals in git-svn]
[ew: rearranged functions to minimize diff and removed prototype
     usage to be consistent with the rest of git-svn (and other
     Perl code in git (and they're ugly to me)]

15 years agogit-svn: fix memory leak when checking for empty symlinks
Eric Wong [Sun, 25 Jan 2009 23:35:52 +0000 (15:35 -0800)]
git-svn: fix memory leak when checking for empty symlinks

By enforcing SVN::Pool usage when calling get_file once again.

This regression was introduced with the reintroduction of
SVN::Ra::get_file() usage in
dbc6c74d0858d77e61e092a48d467e725211f8e9

Signed-off-by: Eric Wong <normalperson@yhbt.net>
15 years agoGIT 1.6.1.1 v1.6.1.1
Junio C Hamano [Sun, 25 Jan 2009 20:41:09 +0000 (12:41 -0800)]
GIT 1.6.1.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoIgnore test-ctype
Benjamin Kramer [Sat, 24 Jan 2009 16:17:55 +0000 (17:17 +0100)]
Ignore test-ctype

Signed-off-by: Benjamin Kramer <benny.kra@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agohttp-push.c: style fixes
Junio C Hamano [Sun, 25 Jan 2009 08:04:15 +0000 (00:04 -0800)]
http-push.c: style fixes

b1c7d4a (http-push: refactor lock-related headers creation for curl
requests, 2009-01-24) had many style violations that slipped through.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'js/patience-diff'
Junio C Hamano [Sat, 24 Jan 2009 05:51:38 +0000 (21:51 -0800)]
Merge branch 'js/patience-diff'

* js/patience-diff:
  bash completions: Add the --patience option
  Introduce the diff option '--patience'
  Implement the patience diff algorithm

Conflicts:
contrib/completion/git-completion.bash

15 years agoMerge branch 'maint'
Junio C Hamano [Sat, 24 Jan 2009 05:51:20 +0000 (21:51 -0800)]
Merge branch 'maint'

* maint:
  Fix Documentation for git-describe

15 years agohttp-push: refactor lock-related headers creation for curl requests
Ray Chuan [Sat, 24 Jan 2009 02:00:22 +0000 (10:00 +0800)]
http-push: refactor lock-related headers creation for curl requests

DAV-related headers (more specifically, headers related to the lock token,
namely, If, Lock-Token, and Timeout) for curl requests are created and
allocated individually, eg a "if_header" variable for the "If: " header, a
"timeout_header" variable for the "Timeout: " header.

This patch provides a new function ("get_dav_token_headers") that creates
these header, saving methods from allocating memory, and from issuing a
"curl_slist_append()" call.  The temporary string storage given to
curl_slist_append() is freed much earlier than the previous code with this
patch, but this change is safe, because curl_slist_append() keeps a copy
of the given string.

In part, this patch also addresses the fact that commit 753bc91 (Remove
the requirement opaquelocktoken uri scheme) did not update memory
allocations for DAV-related headers.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'cb/maint-unpack-trees-absense' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:06:38 +0000 (19:06 -0800)]
Merge branch 'cb/maint-unpack-trees-absense' into maint

* cb/maint-unpack-trees-absense:
  unpack-trees: remove redundant path search in verify_absent
  unpack-trees: fix path search bug in verify_absent
  unpack-trees: handle failure in verify_absent

15 years agoMerge branch 'tr/maint-no-index-fixes' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:04:48 +0000 (19:04 -0800)]
Merge branch 'tr/maint-no-index-fixes' into maint

* tr/maint-no-index-fixes:
  diff --no-index -q: fix endless loop
  diff --no-index: test for pager after option parsing
  diff: accept -- when using --no-index

15 years agoMerge branch 'rs/maint-shortlog-foldline' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:03:50 +0000 (19:03 -0800)]
Merge branch 'rs/maint-shortlog-foldline' into maint

* rs/maint-shortlog-foldline:
  shortlog: handle multi-line subjects like log --pretty=oneline et. al. do

15 years agoMerge branch 'pj/maint-ldflags' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:02:58 +0000 (19:02 -0800)]
Merge branch 'pj/maint-ldflags' into maint

* pj/maint-ldflags:
  configure clobbers LDFLAGS

15 years agoMerge branch 'pb/maint-git-pm-false-dir' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:02:41 +0000 (19:02 -0800)]
Merge branch 'pb/maint-git-pm-false-dir' into maint

* pb/maint-git-pm-false-dir:
  Git.pm: correctly handle directory name that evaluates to "false"

15 years agoMerge branch 'js/maint-bisect-gitk' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:01:32 +0000 (19:01 -0800)]
Merge branch 'js/maint-bisect-gitk' into maint

* js/maint-bisect-gitk:
  bisect view: call gitk if Cygwin's SESSIONNAME variable is set

15 years agoMerge branch 'js/add-not-submodule' into maint
Junio C Hamano [Sat, 24 Jan 2009 03:00:43 +0000 (19:00 -0800)]
Merge branch 'js/add-not-submodule' into maint

* js/add-not-submodule:
  git add: do not add files from a submodule

15 years agoMerge branch 'jc/maint-format-patch' into maint
Junio C Hamano [Sat, 24 Jan 2009 02:59:59 +0000 (18:59 -0800)]
Merge branch 'jc/maint-format-patch' into maint

* jc/maint-format-patch:
  format-patch: show patch text for the root commit

15 years agoMerge branch 'am/maint-push-doc' into maint
Junio C Hamano [Sat, 24 Jan 2009 02:59:26 +0000 (18:59 -0800)]
Merge branch 'am/maint-push-doc' into maint

* am/maint-push-doc:
  Documentation: avoid using undefined parameters
  Documentation: mention branches rather than heads
  Documentation: remove a redundant elaboration
  Documentation: git push repository can also be a remote

15 years agoMerge branch 'maint-1.6.0' into maint
Junio C Hamano [Sat, 24 Jan 2009 02:48:14 +0000 (18:48 -0800)]
Merge branch 'maint-1.6.0' into maint

* maint-1.6.0:
  Fix Documentation for git-describe

15 years agogit-am: implement --reject option passed to git-apply
martin f. krafft [Fri, 23 Jan 2009 00:31:21 +0000 (11:31 +1100)]
git-am: implement --reject option passed to git-apply

With --reject, git-am simply passes the --reject option to git-apply and thus
allows people to work with reject files if they so prefer.

Signed-off-by: martin f. krafft <madduck@madduck.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot/t4202-log.sh: Add testcases
Arjen Laarhoven [Thu, 22 Jan 2009 16:37:24 +0000 (17:37 +0100)]
t/t4202-log.sh: Add testcases

Add testcases for 'git log --diff-filter=[CM]' (copies and renames).
Also add a testcase for 'git log --follow'.

Signed-off-by: Arjen Laarhoven <arjen@yaph.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoAllow cloning an empty repository
Sverre Rabbelier [Fri, 23 Jan 2009 00:07:32 +0000 (01:07 +0100)]
Allow cloning an empty repository

Cloning an empty repository manually (that is, doing 'git init' and
then doing all configuration by hand) can be a lot of work. Save the
user this work by allowing the cloning of empty repositories.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix Documentation for git-describe
Boyd Stephen Smith Jr [Thu, 22 Jan 2009 18:26:25 +0000 (12:26 -0600)]
Fix Documentation for git-describe

The documentation for git-describe says the default abbreviation is 8
hexadecimal digits while cache.c clearly shows DEFAULT_ABBREV set to 7.
This patch corrects the documentation.

Signed-off-by: Boyd Stephen Smith Jr <bss@iguanasuicide.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoChange the spelling of "wordregex".
Boyd Stephen Smith Jr [Wed, 21 Jan 2009 04:59:54 +0000 (22:59 -0600)]
Change the spelling of "wordregex".

Use "wordRegex" for configuration variable names.  Use "word_regex" for C
language tokens.

Signed-off-by: Boyd Stephen Smith Jr. <bss@iguanasuicide.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'kc/maint-diff-bwi-fix'
Junio C Hamano [Thu, 22 Jan 2009 01:07:51 +0000 (17:07 -0800)]
Merge branch 'kc/maint-diff-bwi-fix'

* kc/maint-diff-bwi-fix:
  Fix combined use of whitespace ignore options to diff

15 years agoMerge branch 'lt/maint-wrap-zlib'
Junio C Hamano [Thu, 22 Jan 2009 00:55:17 +0000 (16:55 -0800)]
Merge branch 'lt/maint-wrap-zlib'

* lt/maint-wrap-zlib:
  Wrap inflate and other zlib routines for better error reporting

Conflicts:
http-push.c
http-walker.c
sha1_file.c

15 years agoMerge branch 'am/maint-push-doc'
Junio C Hamano [Thu, 22 Jan 2009 00:51:28 +0000 (16:51 -0800)]
Merge branch 'am/maint-push-doc'

* am/maint-push-doc:
  Documentation: avoid using undefined parameters
  Documentation: mention branches rather than heads
  Documentation: remove a redundant elaboration
  Documentation: git push repository can also be a remote

15 years agoMerge branch 'sg/maint-gitdir-in-subdir'
Junio C Hamano [Thu, 22 Jan 2009 00:51:25 +0000 (16:51 -0800)]
Merge branch 'sg/maint-gitdir-in-subdir'

* sg/maint-gitdir-in-subdir:
  Fix gitdir detection when in subdir of gitdir

15 years agoMerge branch 'jf/am-failure-report'
Junio C Hamano [Thu, 22 Jan 2009 00:51:18 +0000 (16:51 -0800)]
Merge branch 'jf/am-failure-report'

* jf/am-failure-report:
  git-am: re-fix the diag message printing
  git-am: Make it easier to see which patch failed

15 years agoMerge branch 'rs/ctype'
Junio C Hamano [Thu, 22 Jan 2009 00:51:03 +0000 (16:51 -0800)]
Merge branch 'rs/ctype'

* rs/ctype:
  Add is_regex_special()
  Change NUL char handling of isspecial()
  Reformat ctype.c
  Add ctype test

Conflicts:
Makefile

15 years agoMerge branch 'sb/hook-cleanup'
Junio C Hamano [Thu, 22 Jan 2009 00:50:43 +0000 (16:50 -0800)]
Merge branch 'sb/hook-cleanup'

* sb/hook-cleanup:
  run_hook(): allow more than 9 hook arguments
  run_hook(): check the executability of the hook before filling argv
  api-run-command.txt: talk about run_hook()
  Move run_hook() from builtin-commit.c into run-command.c (libgit)
  checkout: don't crash on file checkout before running post-checkout hook

15 years agoMerge branch 'jk/color-parse'
Junio C Hamano [Thu, 22 Jan 2009 00:50:34 +0000 (16:50 -0800)]
Merge branch 'jk/color-parse'

* jk/color-parse:
  Optimize color_parse_mem
  expand --pretty=format color options
  color: make it easier for non-config to parse color specs

15 years agoMerge branch 'jc/maint-format-patch-o-relative'
Junio C Hamano [Thu, 22 Jan 2009 00:50:19 +0000 (16:50 -0800)]
Merge branch 'jc/maint-format-patch-o-relative'

* jc/maint-format-patch-o-relative:
  Teach format-patch to handle output directory relative to cwd

Conflicts:
t/t4014-format-patch.sh

15 years agoMerge branch 'kb/am-directory'
Junio C Hamano [Thu, 22 Jan 2009 00:47:14 +0000 (16:47 -0800)]
Merge branch 'kb/am-directory'

* kb/am-directory:
  git-am: fix shell quoting
  git-am: add --directory=<dir> option

15 years agobash completion: add 'rename' subcommand to git-remote
Markus Heidelberg [Wed, 21 Jan 2009 19:14:55 +0000 (20:14 +0100)]
bash completion: add 'rename' subcommand to git-remote

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Wed, 21 Jan 2009 09:08:10 +0000 (01:08 -0800)]
Merge branch 'maint'

* maint:
  Rename diff.suppress-blank-empty to diff.suppressBlankEmpty

15 years agoMerge branch 'bs/maint-rename-populate-filespec'
Junio C Hamano [Wed, 21 Jan 2009 09:07:33 +0000 (01:07 -0800)]
Merge branch 'bs/maint-rename-populate-filespec'

* bs/maint-rename-populate-filespec:
  Rename detection: Avoid repeated filespec population

15 years agocolor-words: Support diff.wordregex config option
Boyd Stephen Smith Jr [Wed, 21 Jan 2009 03:46:57 +0000 (21:46 -0600)]
color-words: Support diff.wordregex config option

When diff is invoked with --color-words (w/o =regex), use the regular
expression the user has configured as diff.wordregex.

diff drivers configured via attributes take precedence over the
diff.wordregex-words setting.  If the user wants to change them, they have
their own configuration variables.

Signed-off-by: Boyd Stephen Smith Jr <bss@iguanasuicide.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoRename diff.suppress-blank-empty to diff.suppressBlankEmpty
Johannes Schindelin [Tue, 20 Jan 2009 21:08:33 +0000 (22:08 +0100)]
Rename diff.suppress-blank-empty to diff.suppressBlankEmpty

All the other config variables use CamelCase.  This config variable should
not be an exception.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agotutorial-2: Update with the new "git commit" ouput
Santi Béjar [Tue, 20 Jan 2009 11:29:04 +0000 (12:29 +0100)]
tutorial-2: Update with the new "git commit" ouput

An earlier commit c5ee71f (commit: more compact summary and without extra
quotes, 2009-01-19) changed the "git commit" output when creating a
commit.  This patch updates the example session in the tutorial to match
the new output.

Signed-off-by: Santi Béjar <santi@agolina.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoRename detection: Avoid repeated filespec population
Björn Steinbrink [Tue, 20 Jan 2009 15:59:57 +0000 (16:59 +0100)]
Rename detection: Avoid repeated filespec population

In diffcore_rename, we assume that the blob contents in the filespec
aren't required anymore after estimate_similarity has been called and thus
we free it. But estimate_similarity might return early when the file sizes
differ too much. In that case, cnt_data is never set and the next call to
estimate_similarity will populate the filespec again, eventually rereading
the same blob over and over again.

To fix that, we first get the blob sizes and only when the blob contents
are actually required, and when cnt_data will be set, the full filespec is
populated, once.

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix naming scheme for configure cache variables.
Ralf Wildenhues [Mon, 19 Jan 2009 20:34:36 +0000 (21:34 +0100)]
Fix naming scheme for configure cache variables.

In order to be cached, configure variables need to contain the
string '_cv_', and they should begin with a package-specific
prefix in order to avoid interfering with third-party macros.
Rename ld_dashr, ld_wl_rpath, ld_rpath to git_cv_ld_dashr etc.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMakefile: use shell for-loop rather than Make's foreach loop during install
Brandon Casey [Tue, 20 Jan 2009 01:44:03 +0000 (19:44 -0600)]
Makefile: use shell for-loop rather than Make's foreach loop during install

The install target uses a foreach loop to generate a single long shell
command line to handle installation of the built-in git commands.  The
maximum length of the argument list varies by platform, and this use of
foreach quickly grows the length of the argument list.  Current git can
exceed the default maximum argument list length on IRIX 6.5 of 20480
depending on the installation path.

Rather than using make's foreach loop to pre-generate the shell command
line, use a shell for-loop and allow the shell to iterate through each of
the built-in commands.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agouse uppercase POSIX compliant signals for the 'trap' command
Markus Heidelberg [Mon, 19 Jan 2009 23:43:26 +0000 (00:43 +0100)]
use uppercase POSIX compliant signals for the 'trap' command

In 'man 1p trap' there is written:

    "Implementations may permit names with the SIG prefix or ignore case
    in signal names as an extension."

So change the lowercase signals to uppercase, which is POSIX compliant
instead of being an extension.

There wasn't anybody claiming that it doesn't work, but there was a bug
with using a signal with the SIG prefix, which is an extension as well.
So let's play it safe and change it, since it doesn't hurt anyone.

While at it, also convert 8 indentation spaces to 1 tab character.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocontrib/difftool: remove distracting 'echo' in the SIGINT handler
Markus Heidelberg [Mon, 19 Jan 2009 23:41:18 +0000 (00:41 +0100)]
contrib/difftool: remove distracting 'echo' in the SIGINT handler

When interrupting git-difftool with Ctrl-C, the output of this echo
command led to having the cursor at the beginning of the line below the
shell prompt.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocontrib/difftool: change trap condition from SIGINT to INT
Markus Heidelberg [Mon, 19 Jan 2009 23:38:16 +0000 (00:38 +0100)]
contrib/difftool: change trap condition from SIGINT to INT

git-difftool worked for me on an up-to-date Gentoo Linux at home, but
didn't work on a somewhat older Ubuntu Linux 7.10 at work and failed
with the following error, where 'Makefile' was locally modified:

    trap: 244: SIGINT: bad trap
    external diff died, stopping at Makefile.

In 'man 1p trap' there is written:

    "The condition can be EXIT, 0 (equivalent to EXIT), or a signal
    specified using a symbolic name, without the SIG prefix, [...]"

    "Implementations may permit names with the SIG prefix or ignore case
    in signal names as an extension."

So now we do it the POSIX compliant way instead of using an extension.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agocommit: more compact summary and without extra quotes
Santi Béjar [Mon, 19 Jan 2009 22:45:16 +0000 (23:45 +0100)]
commit: more compact summary and without extra quotes

Update the report format again to save the screen real estates, while
avoiding from enclosing the one-line summary of the commit log inside
double quotes pair, which looks awkward when the message begins or ends
with a double quote.  The old format looked like this:

    [master]: created d9a5491: "foo:bar"

Simply removing the double quotes were found to be confusing as a message
often begins with a short-word (area of the system) and a colon.

The new format looks like this:

    [master d9a5491] foo:bar

As discussed in the git mailing list:

    http://thread.gmane.org/gmane.comp.version-control.git/101687/focus=101735

Signed-off-by: Santi Béjar <santi@agolina.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoOptimize color_parse_mem
René Scharfe [Tue, 20 Jan 2009 04:30:30 +0000 (23:30 -0500)]
Optimize color_parse_mem

Commit 5ef8d77a implemented color_parse_mem, a function for
parsing colors from a non-NUL-terminated string, by simply
allocating a new NUL-terminated string and calling
color_parse. This had a small but measurable speed impact on
a user format that used the advanced color parsing. E.g.,

  # uses quick parsing
  $ time ./git log --pretty=tformat:'%Credfoo%Creset' >/dev/null
  real    0m0.673s
  user    0m0.652s
  sys     0m0.016s

  # uses color_parse_mem
  $ time ./git log --pretty=tformat:'%C(red)foo%C(reset)' >/dev/null
  real    0m0.692s
  user    0m0.660s
  sys     0m0.032s

This patch implements color_parse_mem as the primary
function, with color_parse as a wrapper for strings. This
gives comparable timings to the first case above.

Original patch by René. Commit message and debugging by Jeff
King.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoFix combined use of whitespace ignore options to diff
Keith Cascio [Mon, 19 Jan 2009 18:03:04 +0000 (10:03 -0800)]
Fix combined use of whitespace ignore options to diff

The code used to misbehave when options to ignore certain whitespaces
(-w -b and --ignore-at-eol) were combined.

Signed-off-by: Keith Cascio <keith@cs.ucla.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'kc/maint-diff-bwi-fix'
Junio C Hamano [Tue, 20 Jan 2009 05:17:47 +0000 (21:17 -0800)]
Merge branch 'kc/maint-diff-bwi-fix'

* kc/maint-diff-bwi-fix:
  test more combinations of ignore-whitespace options to diff

15 years agotest more combinations of ignore-whitespace options to diff
Keith Cascio [Thu, 15 Jan 2009 00:48:24 +0000 (16:48 -0800)]
test more combinations of ignore-whitespace options to diff

There are three flags involved (-w -b and --ignore-space-at-eol) which
makes 8 combinations possible in total, but only 3 cases are tested (none,
-w alone and -b alone).

This adds the other 5 cases.

Signed-off-by: Keith Cascio <keith@cs.ucla.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge branch 'maint'
Junio C Hamano [Tue, 20 Jan 2009 03:58:58 +0000 (19:58 -0800)]
Merge branch 'maint'

* maint:
  shell: Document that 'cvs server' is a valid command

15 years agoshell: Document that 'cvs server' is a valid command
Lars Noschinski [Mon, 19 Jan 2009 17:06:43 +0000 (18:06 +0100)]
shell: Document that 'cvs server' is a valid command

git-shell's man page explicitly lists all allowed commands, but 'cvs
server' was missing. Add it.

Signed-off-by: Lars Noschinski <lars@public.noschinski.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobash completion: refactor diff options
Thomas Rast [Mon, 19 Jan 2009 21:18:00 +0000 (22:18 +0100)]
bash completion: refactor diff options

diff, log and show all take the same diff options.  Refactor them from
__git_diff and __git_log into a variable, and complete them in
__git_show too.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agobash completion: move pickaxe options to log
Thomas Rast [Mon, 19 Jan 2009 21:17:59 +0000 (22:17 +0100)]
bash completion: move pickaxe options to log

Move the options --pickaxe-all and --pickaxe-regex to git-log, where
they make more sense than with git-diff.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agodifftool: put the cursor on the editable file for Vim
David Aguilar [Mon, 19 Jan 2009 05:34:29 +0000 (21:34 -0800)]
difftool: put the cursor on the editable file for Vim

You only need to edit worktree files when comparing against
the worktree.  Put the cursor automatically into its window for
vimdiff and gvimdiff to avoid doing <C-w>l every time.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agodifftool: fix documentation problems
David Aguilar [Mon, 19 Jan 2009 05:27:19 +0000 (21:27 -0800)]
difftool: fix documentation problems

This patch makes the difftool docs always refer to the
git-difftool script using the dashed form of the name.
Only command examples use the non-dashed form now.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Mon, 19 Jan 2009 06:29:37 +0000 (22:29 -0800)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  git-svn: Show UUID in svn info for added directories with svn 1.5.5
  git-svn: avoid importing nested git repos
  git-svn: fix SVN 1.1.x compatibility
  git-svn: Add --localtime option to "fetch"
  git-svn: better attempt to handle broken symlink updates
  git-svn: handle empty files marked as symlinks in SVN

15 years agogit-svn: Show UUID in svn info for added directories with svn 1.5.5
Marcel Koeppen [Mon, 19 Jan 2009 02:02:01 +0000 (03:02 +0100)]
git-svn: Show UUID in svn info for added directories with svn 1.5.5

In svn 1.5.5 the output of "svn info" for added directories was changed
and now shows the repository UUID. This patch implements the same
behavior for "git svn info" and makes t9119-git-svn-info.17 pass if
svn 1.5.5 is used.

Signed-off-by: Marcel Koeppen <git-dev@marzelpan.de>
Acked-by: Eric Wong <normalperson@yhbt.net>
15 years agogit-am: re-fix the diag message printing
Junio C Hamano [Mon, 19 Jan 2009 03:34:31 +0000 (19:34 -0800)]
git-am: re-fix the diag message printing

The $FIRSTLINE variable is from the user's commit and can contain
arbitrary backslash escapes that may be (mis)interpreted when given to
"echo", depending on the implementation.  Use "printf" to work around the
issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agogit-svn: avoid importing nested git repos
Eric Wong [Mon, 12 Jan 2009 02:23:38 +0000 (18:23 -0800)]
git-svn: avoid importing nested git repos

Some SVN repositories contain git repositories within them
(hopefully accidentally checked in).  Since git refuses to track
nested ".git" repositories, this can be a problem when fetching
updates from SVN.

Thanks to Morgan Christiansson for the report and testing.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
15 years agogit-svn: fix SVN 1.1.x compatibility
Eric Wong [Sun, 18 Jan 2009 06:11:44 +0000 (22:11 -0800)]
git-svn: fix SVN 1.1.x compatibility

The get_log() function in the Perl SVN API introduced the limit
parameter in 1.2.0.  However, this got discarded in our SVN::Ra
compatibility layer when used with SVN 1.1.x.  We now emulate
the limit functionality in older SVN versions by preventing the
original callback from being called if the given limit has been
reached.  This emulation is less bandwidth efficient, but SVN
1.1.x is becoming rarer now.

Additionally, the --limit parameter in svn(1) uses the
aforementioned get_log() functionality change in SVN 1.2.x.
t9129 no longer depends on --limit to work and instead uses
Perl to parse out the commit message.

Thanks to Tom G. Christensen for the bug report.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
15 years agogit-svn: Add --localtime option to "fetch"
Pete Harlan [Sun, 18 Jan 2009 04:10:14 +0000 (20:10 -0800)]
git-svn: Add --localtime option to "fetch"

By default git-svn stores timestamps of fetched commits in
Subversion's UTC format.  Passing --localtime to fetch will convert
them to the timezone of the server on which git-svn is run.

This makes the timestamps of a resulting "git log" agree with what
"svn log" shows for the same repository.

Signed-off-by: Pete Harlan <pgit@pcharlan.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
15 years agogit-svn: better attempt to handle broken symlink updates
Eric Wong [Mon, 12 Jan 2009 00:51:11 +0000 (16:51 -0800)]
git-svn: better attempt to handle broken symlink updates

This is a followup to 7fc35e0e94782bbbefb920875813519038659930,
(workaround a for broken symlinks in SVN).

Since broken SVN clients can commit svn:special files without
the magic "link " prefix, this can affect delta application
when we update the broken svn:special file.  So now we fall
back and retry the delta application on symlinks if having
a "link " prefix fails.

Our behavior differs from svn(1) (v1.5.1) slightly:

  When a svn:special file is created w/o a "link " prefix, svn
  will create a regular file (mode 100644 to git) with the
  contents of the blob as-is.

  Our behavior is to continue creating the symlink (mode 120000
  to git) with the contents of the blob as-is.  While this
  differs from current svn(1) behavior, this is easier and more
  efficient to implement (and the correctness of the svn(1) is
  debatable, since it's a workaround for a bug in the first
  place).

More information on this SVN bug is described here:
  http://subversion.tigris.org/issues/show_bug.cgi?id=2692

Signed-off-by: Eric Wong <normalperson@yhbt.net>
15 years agogit-svn: handle empty files marked as symlinks in SVN
Eric Wong [Mon, 12 Jan 2009 00:51:10 +0000 (16:51 -0800)]
git-svn: handle empty files marked as symlinks in SVN

Broken SVN clients generate empty files with the svn:special set
to '*'.  This attempts to denote a symlink pointing to a file
with an empty path (""), which cannot be generated on a POSIX
system.

Thus, we mimic the behavior of svn(1) and create a zero-byte
file in our tree.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
15 years agoDocumentation: avoid using undefined parameters
Anders Melchiorsen [Sun, 18 Jan 2009 14:36:58 +0000 (15:36 +0100)]
Documentation: avoid using undefined parameters

The <ref> parameter has not been introduced, so rewrite to
avoid it.

Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: mention branches rather than heads
Anders Melchiorsen [Sun, 18 Jan 2009 14:36:57 +0000 (15:36 +0100)]
Documentation: mention branches rather than heads

The "matching refs" semantics works only on matching branches these days.
Instead of using "heads" which traditionally has been used more or less
interchangeably with "refs", say "branch" explicitly here.

Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: remove a redundant elaboration
Anders Melchiorsen [Sun, 18 Jan 2009 14:36:56 +0000 (15:36 +0100)]
Documentation: remove a redundant elaboration

The comment in parentheses is wrong, as one has to leave out both the
colon and <dst>. This situation is covered by the section a few lines
down:

  A parameter <ref> without a colon pushes the <ref> from the source
  repository to the destination repository under the same name.

So, just remove the parentheses.

Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agoDocumentation: git push repository can also be a remote
Anders Melchiorsen [Sun, 18 Jan 2009 14:36:55 +0000 (15:36 +0100)]
Documentation: git push repository can also be a remote

This is copied from pull-fetch-param.txt and helps the reader
to not get stuck in the URL section.

Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agolstat_cache(): introduce clear_lstat_cache() function
Kjetil Barvik [Sun, 18 Jan 2009 15:14:54 +0000 (16:14 +0100)]
lstat_cache(): introduce clear_lstat_cache() function

If you want to completely clear the contents of the lstat_cache(), then
call this new function.

Signed-off-by: Kjetil Barvik <barvik@broadpark.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agolstat_cache(): introduce invalidate_lstat_cache() function
Kjetil Barvik [Sun, 18 Jan 2009 15:14:53 +0000 (16:14 +0100)]
lstat_cache(): introduce invalidate_lstat_cache() function

In some cases it could maybe be necessary to say to the cache that
"Hey, I deleted/changed the type of this pathname and if you currently
have it inside your cache, you should deleted it".

This patch introduce a function which support this.

Signed-off-by: Kjetil Barvik <barvik@broadpark.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agolstat_cache(): introduce has_dirs_only_path() function
Kjetil Barvik [Sun, 18 Jan 2009 15:14:52 +0000 (16:14 +0100)]
lstat_cache(): introduce has_dirs_only_path() function

The create_directories() function in entry.c currently calls stat()
or lstat() for each path component of the pathname 'path' each and every
time.  For the 'git checkout' command, this function is called on each
file for which we must do an update (ce->ce_flags & CE_UPDATE), so we get
lots and lots of calls.

To fix this, we make a new wrapper to the lstat_cache() function, and
call the wrapper function instead of the calls to the stat() or the
lstat() functions.  Since the paths given to the create_directories()
function, is sorted alphabetically, the new wrapper would be very
cache effective in this situation.

To support it we must update the lstat_cache() function to be able to
say that "please test the complete length of 'name'", and also to give
it the length of a prefix, where the cache should use the stat()
function instead of the lstat() function to test each path component.

Thanks to Junio C Hamano, Linus Torvalds and Rene Scharfe for valuable
comments to this patch!

Signed-off-by: Kjetil Barvik <barvik@broadpark.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agolstat_cache(): introduce has_symlink_or_noent_leading_path() function
Kjetil Barvik [Sun, 18 Jan 2009 15:14:51 +0000 (16:14 +0100)]
lstat_cache(): introduce has_symlink_or_noent_leading_path() function

In some cases, especially inside the unpack-trees.c file, and inside
the verify_absent() function, we can avoid some unnecessary calls to
lstat(), if the lstat_cache() function can also be told to keep track
of non-existing directories.

So we update the lstat_cache() function to handle this new fact,
introduce a new wrapper function, and the result is that we save lots
of lstat() calls for a removed directory which previously contained
lots of files, when we call this new wrapper of lstat_cache() instead
of the old one.

We do similar changes inside the unlink_entry() function, since if we
can already say that the leading directory component of a pathname
does not exist, it is not necessary to try to remove a pathname below
it!

Thanks to Junio C Hamano, Linus Torvalds and Rene Scharfe for valuable
comments to this patch!

Signed-off-by: Kjetil Barvik <barvik@broadpark.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agolstat_cache(): more cache effective symlink/directory detection
Kjetil Barvik [Sun, 18 Jan 2009 15:14:50 +0000 (16:14 +0100)]
lstat_cache(): more cache effective symlink/directory detection

Make the cache functionality more effective.  Previously when A/B/C/D
was in the cache and A/B/C/E/file.c was called for, there was no match
at all from the cache.  Now we use the fact that the paths "A", "A/B"
and "A/B/C" are already tested, and we only need to do an lstat() call
on "A/B/C/E".

We only cache/store the last path regardless of its type.  Since the
cache functionality is always used with alphabetically sorted names
(at least it seems so for me), there is no need to store both the last
symlink-leading path and the last real-directory path.  Note that if
the cache is not called with (mostly) alphabetically sorted names,
neither the old, nor this new one, would be very effective.

Previously, when symlink A/B/C/S was cached/stored in the symlink-
leading path, and A/B/C/file.c was called for, it was not easy to use
the fact that we already knew that the paths "A", "A/B" and "A/B/C"
are real directories.

Avoid copying the first path components of the name 2 zillion times
when we test new path components.  Since we always cache/store the
last path, we can copy each component as we test those directly into
the cache.  Previously we ended up doing a memcpy() for the full
path/name right before each lstat() call, and when updating the cache
for each time we have tested a new path component.

We also use less memory, that is, PATH_MAX bytes less memory on the
stack and PATH_MAX bytes less memory on the heap.

Thanks to Junio C Hamano, Linus Torvalds and Rene Scharfe for valuable
comments to this patch!

Signed-off-by: Kjetil Barvik <barvik@broadpark.no>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agomergetool: put the cursor on the editable file for Vim
Markus Heidelberg [Sat, 17 Jan 2009 21:28:45 +0000 (22:28 +0100)]
mergetool: put the cursor on the editable file for Vim

When resolving conflicts, you only need to edit the $MERGED file. Put
the cursor automatically into its window for vimdiff and gvimdiff to
avoid doing <C-w>l every time.

Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de>
Tested-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 years agot7700: demonstrate misbehavior of 'repack -a' when local packs exist
Brandon Casey [Fri, 9 Jan 2009 22:14:39 +0000 (16:14 -0600)]
t7700: demonstrate misbehavior of 'repack -a' when local packs exist

The ability to "...fatten [the] local repository by packing everything that
is needed by the local ref into a single new pack, including things that are
borrowed from alternates"[1] is supposed to be provided by the '-a' or '-A'
options to repack when '-l' is not used, but there is a flaw.  For each
pack in the local repository without a .keep file, repack supplies a
--unpacked=<pack> argument to pack-objects.

The --unpacked option to pack-objects, with or without an argument, causes
pack-objects to ignore any object which is packed in a pack not mentioned
in an argument to --unpacked=.  So, if there are local packs, and
'repack -a' is called, then any objects which reside in packs accessible
through alternates will _not_ be packed.  If there are no local packs, then
no --unpacked argument will be supplied, and repack will behave as expected.

[1] http://mid.gmane.org/7v8wrwidi3.fsf@gitster.siamese.dyndns.org

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>