Code

git.git
12 years agoMerge branch 'th/mergetools-deltawalker'
Junio C Hamano [Fri, 16 Mar 2012 15:24:19 +0000 (08:24 -0700)]
Merge branch 'th/mergetools-deltawalker'

* th/mergetools-deltawalker:
  Documentation/difftool: add deltawalker to list of valid diff tools

12 years agoMerge branch 'jc/maint-verify-objects-remove-pessimism'
Junio C Hamano [Fri, 16 Mar 2012 15:23:53 +0000 (08:23 -0700)]
Merge branch 'jc/maint-verify-objects-remove-pessimism'

The code to validate the history connectivity between old refs and new
refs used by fetch and receive-pack, introduced in 1.7.8, was grossly
inefficient and unnecessarily tried to re-validate integrity of individual
objects. This essentially reverts that performance regression.

* jc/maint-verify-objects-remove-pessimism:
  fetch/receive: remove over-pessimistic connectivity check

12 years agoMerge branch 'sl/customize-sane-tool-path'
Junio C Hamano [Fri, 16 Mar 2012 15:23:34 +0000 (08:23 -0700)]
Merge branch 'sl/customize-sane-tool-path'

* sl/customize-sane-tool-path:
  configure: allow user to prevent $PATH "sanitization" on Solaris

12 years agoMerge "two fixes for fast-import's 'ls' command" from Jonathan
Junio C Hamano [Fri, 16 Mar 2012 15:19:18 +0000 (08:19 -0700)]
Merge "two fixes for fast-import's 'ls' command" from Jonathan

Andrew Sayers noticed that the svn-fe | git fast-import pipeline
mishandles a subversion history that copies the root directory to a
sub-directory (e.g. doing `svn cp . trunk` to standardise your
layout).  As David Barr explained, the bug arises when the following
command is sent to git fast-import:

  'ls' SP ':1' SP LF

Instead of reading back what is at the root of r1, it unconditionally
reports the path as missing.

After sleeping on it, here are two patches for 'maint'.  One plugs a
memory leak.  The other ensures that trying to pass an empty path to
the 'ls' command results in an error message that can help the
frontend author instead of the silently broken conversion Andrew
found.

Then we can carefully add 'ls ""' support in 1.7.11.

* commit 'refs/pull-request-tags/jn/maint-fast-import-empty-ls':
  fast-import: don't allow 'ls' of path with empty components
  fast-import: leakfix for 'ls' of dirty trees

12 years agoMerge branch 'th/git-diffall'
Junio C Hamano [Fri, 16 Mar 2012 04:54:42 +0000 (21:54 -0700)]
Merge branch 'th/git-diffall'

* th/git-diffall:
  contrib/diffall: fix cleanup trap on Windows
  contrib/diffall: eliminate duplicate while loops
  contrib/diffall: eliminate use of tar
  contrib/diffall: create tmp dirs without mktemp
  contrib/diffall: comment actual reason for 'cdup'

12 years agoMerge branch 'th/doc-diff-submodule-option'
Junio C Hamano [Fri, 16 Mar 2012 04:54:30 +0000 (21:54 -0700)]
Merge branch 'th/doc-diff-submodule-option'

* th/doc-diff-submodule-option:
  Documentation/diff-options: reword description of --submodule option

12 years agofetch/receive: remove over-pessimistic connectivity check
Junio C Hamano [Thu, 15 Mar 2012 21:57:02 +0000 (14:57 -0700)]
fetch/receive: remove over-pessimistic connectivity check

Git 1.7.8 introduced an object and history re-validation step after
"fetch" or "push" causes new history to be added to a receiving
repository. This is to protect a malicious server or pushing client from
corrupting the repository by taking advantage of an existing corrupt
object that is unconnected to existing history.

But this check is way over-pessimistic.  During "fetch" or "receive-pack"
(the server side of "push"), unpack-objects and index-pack already
validate individual objects that are received, and the only thing we would
want to catch are corrupted objects that already happen to exist in our
repository but are not referenced from our refs.  Such objects must have
been written by an earlier run of our codepaths that write out loose
objects or packfiles, and they must have done the validation of individual
objects when they did so.  The only thing left to worry about is the
connectivity integrity, which can be checked with "rev-list --objects",
which is much cheaper.  We have been paying the 5x to 8x runtime overhead
the --verify-objects often adds for no real gain.

Revert check_everything_connected() not to use this over-pessimistic
check.

Credit goes to Nguyễn Thái Ngọc Duy, who originally identified the
performance regression and endured multiple rounds of reviews to fix it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/difftool: add deltawalker to list of valid diff tools
Tim Henigan [Thu, 15 Mar 2012 16:28:26 +0000 (12:28 -0400)]
Documentation/difftool: add deltawalker to list of valid diff tools

deltawalker has been supported since 284a126c3ef3, but was not added
to the list of valid diff tools reported by 'git difftool --help'.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.10-rc1 v1.7.10-rc1
Junio C Hamano [Wed, 14 Mar 2012 22:38:47 +0000 (15:38 -0700)]
Git 1.7.10-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocontrib/diffall: fix cleanup trap on Windows
Tim Henigan [Wed, 14 Mar 2012 16:38:06 +0000 (12:38 -0400)]
contrib/diffall: fix cleanup trap on Windows

Prior to this commit, the cleanup trap that removes the tmp dir
created by the script would fail on Windows. The error was silently
ignored by the script.

On Windows, a directory cannot be removed while it is the working
directory of the process (thanks to Johannes Sixt on the Git list
for this info [1]).

This commit eliminates the 'cd' into the tmp directory that caused
the error.

[1]: http://article.gmane.org/gmane.comp.version-control.git/193086

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocontrib/diffall: eliminate duplicate while loops
Tim Henigan [Wed, 14 Mar 2012 16:38:05 +0000 (12:38 -0400)]
contrib/diffall: eliminate duplicate while loops

There were 3 instances of a 'while read; do' that used identical logic
to populate '/tmp/right_dir'. This commit groups them into a single loop.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocontrib/diffall: eliminate use of tar
Tim Henigan [Wed, 14 Mar 2012 16:38:04 +0000 (12:38 -0400)]
contrib/diffall: eliminate use of tar

The 'tar' utility is not available on all platforms (some only support
'gnutar').  An earlier commit created a work-around for this problem,
but a better solution is to eliminate the use of 'tar' completely.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocontrib/diffall: create tmp dirs without mktemp
Tim Henigan [Wed, 14 Mar 2012 16:38:03 +0000 (12:38 -0400)]
contrib/diffall: create tmp dirs without mktemp

mktemp is not available on all platforms.  Instead of littering the code
with a work-around, this commit replaces mktemp with a one-line Perl
script.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocontrib/diffall: comment actual reason for 'cdup'
Tim Henigan [Wed, 14 Mar 2012 16:38:02 +0000 (12:38 -0400)]
contrib/diffall: comment actual reason for 'cdup'

The comment from an earlier commit did not reflect the actual reason this
operation is needed.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/diff-options: reword description of --submodule option
Tim Henigan [Wed, 14 Mar 2012 17:00:55 +0000 (13:00 -0400)]
Documentation/diff-options: reword description of --submodule option

The previous description was confusing.  This rewrite makes it easier
to understand.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/i18n-shell-script-gettext'
Junio C Hamano [Tue, 13 Mar 2012 19:36:28 +0000 (12:36 -0700)]
Merge branch 'jc/i18n-shell-script-gettext'

The auto detection was testing if a fixed string that is known to be
non-empty is empty by mistake.

* jc/i18n-shell-script-gettext:
  i18n: fix auto detection of gettext scheme for shell scripts

12 years agoMerge branch 'jc/maint-undefined-i18n-observation-test'
Junio C Hamano [Tue, 13 Mar 2012 19:36:09 +0000 (12:36 -0700)]
Merge branch 'jc/maint-undefined-i18n-observation-test'

It was unclear what a test in t0204 wanted to check; it turns out
that it was only to observe an undefined behaviour of the system,
and did not anticipate one kind of reasonable error behaviour.

* jc/maint-undefined-i18n-observation-test:
  t0204: clarify the "observe undefined behaviour" test

12 years agoMerge branch 'ms/maint-config-error-at-eol-linecount'
Junio C Hamano [Tue, 13 Mar 2012 19:35:53 +0000 (12:35 -0700)]
Merge branch 'ms/maint-config-error-at-eol-linecount'

When "git config" diagnoses an error in a configuration file and
shows the line number for the offending line, it miscounted if the
error was at the end of line.

By Martin Stenberg
* ms/maint-config-error-at-eol-linecount:
  config: report errors at the EOL with correct line number

Conflicts:
t/t1300-repo-config.sh

12 years agoMerge branch 'ph/rerere-doc'
Junio C Hamano [Tue, 13 Mar 2012 19:35:22 +0000 (12:35 -0700)]
Merge branch 'ph/rerere-doc'

By Phil Hord
* ph/rerere-doc:
  rerere: Document 'rerere remaining'

12 years agoam: officially deprecate -b/--binary option
Junio C Hamano [Tue, 13 Mar 2012 18:38:27 +0000 (11:38 -0700)]
am: officially deprecate -b/--binary option

We have had these options as harmless no-op for more than 3 years without
officially deprecating them.  Let's announce the deprecation and start
warning against their use, but without failing the command just not yet,
so that we can later repurpose the option if we want to in the future.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.10 before -rc1
Junio C Hamano [Mon, 12 Mar 2012 22:59:06 +0000 (15:59 -0700)]
Update draft release notes to 1.7.10 before -rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'az/verify-tag-use-gpg-config'
Junio C Hamano [Mon, 12 Mar 2012 22:55:53 +0000 (15:55 -0700)]
Merge branch 'az/verify-tag-use-gpg-config'

"git tag -s" honored "gpg.program" configuration variable since
1.7.9, but "git tag -v" and "git verify-tag" didn't.

By Alex Zepeda
* az/verify-tag-use-gpg-config:
  verify-tag: Parse GPG configuration options.

12 years agoSync with 1.7.9.4
Junio C Hamano [Mon, 12 Mar 2012 22:54:21 +0000 (15:54 -0700)]
Sync with 1.7.9.4

12 years agoGit 1.7.9.4 v1.7.9.4
Junio C Hamano [Mon, 12 Mar 2012 22:52:52 +0000 (15:52 -0700)]
Git 1.7.9.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'tr/maint-bundle-boundary' into maint
Junio C Hamano [Mon, 12 Mar 2012 22:46:53 +0000 (15:46 -0700)]
Merge branch 'tr/maint-bundle-boundary' into maint

"git bundle" did not record boundary commits correctly when there
are many of them.

By Thomas Rast
* tr/maint-bundle-boundary:
  bundle: keep around names passed to add_pending_object()
  t5510: ensure we stay in the toplevel test dir
  t5510: refactor bundle->pack conversion

12 years agoMerge branch 'jc/maint-diff-patch-header' into maint
Junio C Hamano [Mon, 12 Mar 2012 22:46:32 +0000 (15:46 -0700)]
Merge branch 'jc/maint-diff-patch-header' into maint

"git diff-index" and its friends at the plumbing level showed the
"diff --git" header and nothing else for a path whose cached stat
info is dirty without actual difference when asked to produce a
patch. This was a longstanding bug that we could have fixed long
time ago.

By Junio C Hamano
* jc/maint-diff-patch-header:
  diff -p: squelch "diff --git" header for stat-dirty paths
  t4011: illustrate "diff-index -p" on stat-dirty paths
  t4011: modernise style

12 years agoMerge branch 'jn/maint-do-not-match-with-unsanitized-searchtext' into maint
Junio C Hamano [Mon, 12 Mar 2012 22:45:57 +0000 (15:45 -0700)]
Merge branch 'jn/maint-do-not-match-with-unsanitized-searchtext' into maint

"gitweb" did use quotemeta() to prepare search string when asked to
do a fixed-string project search, but did not use it by mistake and
used the user-supplied string instead.

By Jakub Narebski
* jn/maint-do-not-match-with-unsanitized-searchtext:
  gitweb: Fix fixed string (non-regexp) project search

12 years agoMerge branch 'jc/am-3-nonstandard-popt' into maint
Junio C Hamano [Mon, 12 Mar 2012 22:43:06 +0000 (15:43 -0700)]
Merge branch 'jc/am-3-nonstandard-popt' into maint

The code to synthesize the fake ancestor tree used by 3-way merge
fallback in "git am" was not prepared to read a patch created with
a non-standard -p<num> value.

* jc/am-3-nonstandard-popt:
  test: "am -3" can accept non-standard -p<num>
  am -3: allow nonstandard -p<num> option

12 years agogit-am: error out when seeing -b/--binary
Thomas Rast [Mon, 12 Mar 2012 21:47:19 +0000 (22:47 +0100)]
git-am: error out when seeing -b/--binary

The --binary option to git-apply has been a no-op since 2b6eef9 (Make
apply --binary a no-op., 2006-09-06) and was deprecated in cb3a160
(git-am: ignore --binary option, 2008-08-09).

We could remove it outright, but let's be nice to people who still
have scripts saying 'git am -b' (if they exist) and tell them the
reason for the sudden failure.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoi18n: fix auto detection of gettext scheme for shell scripts
Junio C Hamano [Mon, 12 Mar 2012 21:41:15 +0000 (14:41 -0700)]
i18n: fix auto detection of gettext scheme for shell scripts

A new code added by ad17ea7 (add a Makefile switch to avoid gettext
translation in shell scripts, 2012-01-23) tried to optionally force
a gettext scheme to "fallthrough", but ended up forcing it to everybody.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoconfig: report errors at the EOL with correct line number
Martin Stenberg [Fri, 9 Mar 2012 21:57:54 +0000 (22:57 +0100)]
config: report errors at the EOL with correct line number

A section in a config file with a missing "]" reports the next line
as bad, same goes to a value with a missing end quote.

This happens because the error is not detected until the end of the
line, when line number is already increased. Fix this by decreasing
line number by one for these cases.

Signed-off-by: Martin Stenberg <martin@gnutiken.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge https://github.com/git-l10n/git-po
Junio C Hamano [Mon, 12 Mar 2012 16:03:20 +0000 (09:03 -0700)]
Merge https://github.com/git-l10n/git-po

Updates to localized messages for zn_CN and sv locales.

via Jiang Xin
* https://github.com/git-l10n/git-po:
  l10n: Improve zh_CN translation for msg "not something we can merge"
  l10n: Improve zh_CN trans for msg that cannot fast-forward
  l10n: Update zh_CN translation for 1.7.10-rc0
  Update Swedish translation (732t0f0u).
  po/sv.po: add Swedish translation
  l10n: Update git.pot (1 new message)
  l10n: Update zh_CN translation for 1.7.9.2
  l10n: Improve commit msg for zh_CN translation
  l10n: Improve zh_CN translation for msg that make empty commit when amend.
  l10n: Improve zh_CN translation for empty cherry-pick msg.
  l10n: Improve zh_CN translation for msg about branch deletion deny
  l10n: Improve zh_CN translation for lines insertion and deletion.

12 years agofast-import: don't allow 'ls' of path with empty components
Jonathan Nieder [Sat, 10 Mar 2012 04:07:22 +0000 (22:07 -0600)]
fast-import: don't allow 'ls' of path with empty components

As the fast-import manual explains:

The value of <path> must be in canonical form. That is it must
not:
. contain an empty directory component (e.g. foo//bar is invalid),
. end with a directory separator (e.g. foo/ is invalid),
. start with a directory separator (e.g. /foo is invalid),

Unfortunately the "ls" command accepts these invalid syntaxes and
responds by declaring that the indicated path is missing.  This is too
subtle and causes importers to silently misbehave; better to error out
so the operator knows what's happening.

The C, R, and M commands already error out for such paths.

Reported-by: Andrew Sayers <andrew-git@pileofstuff.org>
Analysis-by: David Barr <davidbarr@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
12 years agofast-import: leakfix for 'ls' of dirty trees
Jonathan Nieder [Sat, 10 Mar 2012 03:20:34 +0000 (21:20 -0600)]
fast-import: leakfix for 'ls' of dirty trees

When the chosen directory has changed since it was last written to
pack, "tree_content_get" makes a deep copy of its content to scribble
on while computing the tree name, which we forgot to free.

This leak has been present since the 'ls' command was introduced in
v1.7.5-rc0~3^2~33 (fast-import: add 'ls' command, 2010-12-02).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
12 years agot0204: clarify the "observe undefined behaviour" test
Junio C Hamano [Wed, 7 Mar 2012 23:36:59 +0000 (15:36 -0800)]
t0204: clarify the "observe undefined behaviour" test

This test asks for an impossible conversion to the system by
preparing an UTF-8 translation with characters that cannot be
expressed in ISO-8859-1, and then asking the message shown in
ISO-8859-1.  Even though the behaviour against such a request is
undefined, it may be interesting to see what the system does, and
the purpose of this test is to see if there are platforms that
exhibit behaviour that we haven't seen.

The original recognized two known modes of behaviour:

 - the key used to query the message catalog ("TEST: Old English
   Runes"), saying "I cannot do that i18n".
 - impossible characters replaced with ASCII "?", saying "I punt".

but they were treated totally differently.  The test simply issued
an informational message "Your system punts on this one" for the
first error mode, while it diagnosed the latter as "Your system is
good; you pass!".

It turns out that Mac OS X exhibits a third mode of error behaviour,
to spew out the raw value stored in the message catalog.  The test
diagnosed this behaviour as "broken", but it is merely trying to do
its best to respond to an impossible request by saying "I punt" in a
way that is slightly different from the second one.

Update the offending test to make it clear what is (and is not)
being tested, update the code structure so that newly discovered
error mode can easily be added to it later, and reword the message
that comes from a failing case to clarify that it is not the system
that is broken when it fails, but merely that the behaviour is not
something we have seen.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoconfigure: allow user to prevent $PATH "sanitization" on Solaris
Stefano Lattarini [Fri, 9 Mar 2012 12:43:55 +0000 (13:43 +0100)]
configure: allow user to prevent $PATH "sanitization" on Solaris

On a Solaris 10 system with Solaris make installed as '/usr/xpg4/bin/make',
GNU make installed as '/usr/local/bin/make', and with '/usr/local/bin'
appearing in $PATH *before* '/usr/xpg4/bin', I was seeing errors like this
upon invoking "make all":

    Usage : make [ -f makefile ][ -K statefile ]...
    make: Fatal error: Unknown option `-C'

This happenes because the Git's Makefile, when running on Solaris,
automatically "sanitizes" $PATH by prepending '/usr/xpg6/bin' and
'/usr/xpg4/bin' to it in order to avoid using non-POSIX /bin/sh from
being used.  In the setup described above, however, this has an
unintended consequence of forcing the use of Solaris make in recursive
make invocations -- even if the $(MAKE) macro is being correctly used in
them!

When building without using the autoconf machinery, this can be solved
by overriding $(SANE_TOOL_PATH).  Teach the autoconf machinery to also
allow users of ./configure to override it from the command line with a
new --with-sane-tool-path option.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agop4000: use -3000 when promising -3000
Thomas Rast [Fri, 9 Mar 2012 09:52:54 +0000 (10:52 +0100)]
p4000: use -3000 when promising -3000

The 'log -3000 (baseline)' test accidentally still used -1000 from an
earlier version.

Noticed-by: Lawrence Holding <Lawrence.Holding@cubic.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agorerere: Document 'rerere remaining'
Phil Hord [Thu, 8 Mar 2012 21:08:50 +0000 (16:08 -0500)]
rerere: Document 'rerere remaining'

This adds the 'remaining' command to the documentation of
'git rerere'. This command was added in ac49f5ca (Feb 16 2011;
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>) but
it was never documented.

Touch up the other rerere commands to reduce noise.

First noticed by Vincent van Ravesteijn.

Signed-off-by: Phil Hord <phil.hord@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoverify-tag: Parse GPG configuration options.
Alex Zepeda [Thu, 8 Mar 2012 20:07:20 +0000 (12:07 -0800)]
verify-tag: Parse GPG configuration options.

Modify verify-tag to load relevant GPG variables from the git
configuratio file.  This allows git tag -v to use an alternative
GPG binary in the same way that git tag -s does.

Signed-off-by: Alex Zepeda <alex@inferiorhumanorgans.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.10
Junio C Hamano [Thu, 8 Mar 2012 21:08:26 +0000 (13:08 -0800)]
Update draft release notes to 1.7.10

Also apply typofixes people on the list helped spotting and
correcting.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'kb/maint-prune-rmdir-closedir'
Junio C Hamano [Thu, 8 Mar 2012 21:05:04 +0000 (13:05 -0800)]
Merge branch 'kb/maint-prune-rmdir-closedir'

By Karsten Blees
* kb/maint-prune-rmdir-closedir:
  fix deletion of .git/objects sub-directories in git-prune/repack

12 years agoMerge branch 'jl/maint-submodule-relative'
Junio C Hamano [Thu, 8 Mar 2012 21:04:52 +0000 (13:04 -0800)]
Merge branch 'jl/maint-submodule-relative'

By Jens Lehmann (3) and Johannes Sixt (1)
* jl/maint-submodule-relative:
  submodules: fix ambiguous absolute paths under Windows
  submodules: refactor computation of relative gitdir path
  submodules: always use a relative path from gitdir to work tree
  submodules: always use a relative path to gitdir

12 years agoMerge branch 'jn/maint-do-not-match-with-unsanitized-searchtext'
Junio C Hamano [Thu, 8 Mar 2012 21:04:49 +0000 (13:04 -0800)]
Merge branch 'jn/maint-do-not-match-with-unsanitized-searchtext'

By Jakub Narebski
* jn/maint-do-not-match-with-unsanitized-searchtext:
  gitweb: Fix fixed string (non-regexp) project search

Conflicts:
gitweb/gitweb.perl

12 years agoMerge branch 'vr/branch-doc'
Junio C Hamano [Thu, 8 Mar 2012 21:04:44 +0000 (13:04 -0800)]
Merge branch 'vr/branch-doc'

By Vincent van Ravesteijn
* vr/branch-doc:
  Documentation/git-branch: add default for --contains
  Documentation/git-branch: fix a typo
  Documentation/git-branch: cleanups

12 years agoperf: export some important test-lib variables
Thomas Rast [Thu, 8 Mar 2012 08:54:55 +0000 (09:54 +0100)]
perf: export some important test-lib variables

The only bug right now is that $GIT_TEST_CMP is needed for test_cmp to
work.

However, we also export the three most important paths for tests:

  TEST_DIRECTORY
  TRASH_DIRECTORY
  GIT_BUILD_DIR

Since they are available within test_expect_success, a future test
writer may expect them to also be defined in test_perf.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoperf: load test-lib-functions from the correct directory
Thomas Rast [Thu, 8 Mar 2012 08:54:54 +0000 (09:54 +0100)]
perf: load test-lib-functions from the correct directory

Loading it in the subshells still referred to $TEST_DIRECTORY/..,
which was only correct in preliminary versions of perf-lib.sh

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agol10n: Improve zh_CN translation for msg "not something we can merge"
Thynson [Sat, 3 Mar 2012 01:03:27 +0000 (09:03 +0800)]
l10n: Improve zh_CN translation for msg "not something we can merge"

Signed-off-by: Thynson <lanxingcan@gmail.com>
12 years agol10n: Improve zh_CN trans for msg that cannot fast-forward
Thynson [Sat, 3 Mar 2012 00:34:28 +0000 (08:34 +0800)]
l10n: Improve zh_CN trans for msg that cannot fast-forward

Signed-off-by: Thynson <lanxingcan@gmail.com>
12 years agol10n: Update zh_CN translation for 1.7.10-rc0
Jiang Xin [Thu, 8 Mar 2012 04:06:53 +0000 (12:06 +0800)]
l10n: Update zh_CN translation for 1.7.10-rc0

Translate 1 new message from Git 1.7.10-rc0.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agoUpdate Swedish translation (732t0f0u).
Peter Krefting [Thu, 8 Mar 2012 09:56:37 +0000 (10:56 +0100)]
Update Swedish translation (732t0f0u).

This update includes a replay of some review fixes from the initial
translation run in 2010, which I cannot find having committed anywhere.

Add myself to the po/TEAMS file as well.

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
12 years agopo/sv.po: add Swedish translation
Peter Krefting [Sun, 12 Sep 2010 20:10:21 +0000 (21:10 +0100)]
po/sv.po: add Swedish translation

Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
(cherry picked from commit 54ce07007c7988268d43619c580e81fbca09d37b)

12 years agol10n: Update git.pot (1 new message)
Jiang Xin [Thu, 8 Mar 2012 02:20:20 +0000 (10:20 +0800)]
l10n: Update git.pot (1 new message)

Update file 'po/git.pot' to v1.7.10-rc0:

* Add 1 new l10n string in the new generated "git.pot" file at line:
  191

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agoMerge v1.7.10-rc0 for git l10n update
Jiang Xin [Thu, 8 Mar 2012 02:17:21 +0000 (10:17 +0800)]
Merge v1.7.10-rc0 for git l10n update

12 years agoGit 1.7.10-rc0 v1.7.10-rc0
Junio C Hamano [Wed, 7 Mar 2012 20:51:55 +0000 (12:51 -0800)]
Git 1.7.10-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/pickaxe-ignore-case'
Junio C Hamano [Wed, 7 Mar 2012 20:12:59 +0000 (12:12 -0800)]
Merge branch 'jc/pickaxe-ignore-case'

By Junio C Hamano (2) and Ramsay Jones (1)
* jc/pickaxe-ignore-case:
  ctype.c: Fix a sparse warning
  pickaxe: allow -i to search in patch case-insensitively
  grep: use static trans-case table

12 years agofix deletion of .git/objects sub-directories in git-prune/repack
Karsten Blees [Tue, 6 Mar 2012 09:18:41 +0000 (10:18 +0100)]
fix deletion of .git/objects sub-directories in git-prune/repack

Both git-prune and git-repack (and thus, git-gc) try to rmdir while
holding a DIR* handle on the directory.  This can leave dangling
empty directories in the .git/objects on platforms where directory
cannot be removed while they are open.

First call closedir() and then rmdir(); that is more logical ordering.

Reported-by: John Chen <john0312@gmail.com>
Reported-by: Stefan Naewe <stefan.naewe@gmail.com>
Signed-off-by: Karsten Blees <blees@dcon.de>
Improved-and-Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jh/threadable-symlink-check'
Junio C Hamano [Tue, 6 Mar 2012 22:53:07 +0000 (14:53 -0800)]
Merge branch 'jh/threadable-symlink-check'

By Jared Hance
* jh/threadable-symlink-check:
  Add threaded versions of functions in symlinks.c.

12 years agoMerge branch 'jc/maint-diff-patch-header'
Junio C Hamano [Tue, 6 Mar 2012 22:53:07 +0000 (14:53 -0800)]
Merge branch 'jc/maint-diff-patch-header'

By Junio C Hamano
* jc/maint-diff-patch-header:
  diff -p: squelch "diff --git" header for stat-dirty paths
  t4011: illustrate "diff-index -p" on stat-dirty paths
  t4011: modernise style

12 years agoMerge branch 'th/mergetools-deltawalker'
Junio C Hamano [Tue, 6 Mar 2012 22:53:07 +0000 (14:53 -0800)]
Merge branch 'th/mergetools-deltawalker'

By Tim Henigan
* th/mergetools-deltawalker:
  mergetools: add a plug-in to support DeltaWalker

12 years agoMerge branch 'cn/pull-rebase-message'
Junio C Hamano [Tue, 6 Mar 2012 22:53:06 +0000 (14:53 -0800)]
Merge branch 'cn/pull-rebase-message'

By Carlos Martín Nieto
* cn/pull-rebase-message:
  Make git-{pull,rebase} message without tracking information friendlier

12 years agoMerge branch 'sl/modern-t0000'
Junio C Hamano [Tue, 6 Mar 2012 22:53:06 +0000 (14:53 -0800)]
Merge branch 'sl/modern-t0000'

By Stefano Lattarini
* sl/modern-t0000:
  t0000: modernise style

12 years agoMerge branch 'nl/http-proxy-auth'
Junio C Hamano [Tue, 6 Mar 2012 22:53:06 +0000 (14:53 -0800)]
Merge branch 'nl/http-proxy-auth'

By Nelson Benitez Leon
* nl/http-proxy-auth:
  http: support proxies that require authentication

12 years agoMerge branch 'tr/maint-bundle-boundary'
Junio C Hamano [Tue, 6 Mar 2012 22:53:06 +0000 (14:53 -0800)]
Merge branch 'tr/maint-bundle-boundary'

By Thomas Rast
* tr/maint-bundle-boundary:
  bundle: keep around names passed to add_pending_object()
  t5510: ensure we stay in the toplevel test dir
  t5510: refactor bundle->pack conversion

12 years agoMerge branch 'zj/diff-stat-dyncol'
Junio C Hamano [Tue, 6 Mar 2012 22:53:06 +0000 (14:53 -0800)]
Merge branch 'zj/diff-stat-dyncol'

By Zbigniew Jędrzejewski-Szmek (8) and Junio C Hamano (1)
* zj/diff-stat-dyncol:
  : This breaks tests. Perhaps it is not worth using the decimal-width stuff
  : for this series, at least initially.
  diff --stat: add config option to limit graph width
  diff --stat: enable limiting of the graph part
  diff --stat: add a test for output with COLUMNS=40
  diff --stat: use a maximum of 5/8 for the filename part
  merge --stat: use the full terminal width
  log --stat: use the full terminal width
  show --stat: use the full terminal width
  diff --stat: use the full terminal width
  diff --stat: tests for long filenames and big change counts

12 years agoMerge branch 'maint'
Junio C Hamano [Tue, 6 Mar 2012 22:53:02 +0000 (14:53 -0800)]
Merge branch 'maint'

By Thomas Rast
* maint:
  t5704: fix nonportable sed/grep usages
  Document the --histogram diff option

12 years agogitweb: Fix fixed string (non-regexp) project search
Jakub Narebski [Fri, 2 Mar 2012 22:34:24 +0000 (23:34 +0100)]
gitweb: Fix fixed string (non-regexp) project search

Use $search_regexp, where regex metacharacters are quoted, for
searching projects list, rather than $searchtext, which contains
original search term.

Reported-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot5704: fix nonportable sed/grep usages
Thomas Rast [Tue, 6 Mar 2012 14:50:37 +0000 (15:50 +0100)]
t5704: fix nonportable sed/grep usages

OS X's sed and grep would complain with (respectively)

  sed: 1: "/^-/{p;q}": extra characters at the end of q command
  grep: Regular expression too big

For sed, use an explicit ; to terminate the q command.

For grep, spell the "40 hex digits" explicitly in the regex, which
should be safe as other tests already use this and we haven't got
breakage reports on OS X about them.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint-1.7.8' into maint
Junio C Hamano [Tue, 6 Mar 2012 20:05:09 +0000 (12:05 -0800)]
Merge branch 'maint-1.7.8' into maint

By Thomas Rast
* maint-1.7.8:
  Document the --histogram diff option

12 years agoMerge branch 'maint-1.7.7' into maint-1.7.8
Junio C Hamano [Tue, 6 Mar 2012 20:04:48 +0000 (12:04 -0800)]
Merge branch 'maint-1.7.7' into maint-1.7.8

By Thomas Rast
* maint-1.7.7:
  Document the --histogram diff option

12 years agoDocument the --histogram diff option
Thomas Rast [Tue, 6 Mar 2012 13:15:02 +0000 (14:15 +0100)]
Document the --histogram diff option

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoperf: compare diff algorithms
Thomas Rast [Tue, 6 Mar 2012 13:15:01 +0000 (14:15 +0100)]
perf: compare diff algorithms

8c912ee (teach --histogram to diff, 2011-07-12) claimed histogram diff
was faster than both Myers and patience.

We have since incorporated a performance testing framework, so add a
test that compares the various diff tasks performed in a real 'log -p'
workload.  This does indeed show that histogram diff slightly beats
Myers, while patience is much slower than the others.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/git-branch: add default for --contains
Vincent van Ravesteijn [Tue, 6 Mar 2012 09:32:45 +0000 (10:32 +0100)]
Documentation/git-branch: add default for --contains

Indicate that the commit parameter of --contains defaults to HEAD.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/git-branch: fix a typo
Vincent van Ravesteijn [Tue, 6 Mar 2012 09:32:44 +0000 (10:32 +0100)]
Documentation/git-branch: fix a typo

Fix a typo by replacing 'tag' with 'branch'.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocumentation/git-branch: cleanups
Vincent van Ravesteijn [Tue, 6 Mar 2012 09:32:43 +0000 (10:32 +0100)]
Documentation/git-branch: cleanups

Most of the exact option strings to be typed by end users are
already set in typewriter font by using `--option`, but a few places
used '--option' to call for italics or with no quoting.  Uniformly
use `--option`.

Also add a full-stop after a sentence that missed one.

Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoSync with 1.7.9.3
Junio C Hamano [Mon, 5 Mar 2012 22:29:50 +0000 (14:29 -0800)]
Sync with 1.7.9.3

12 years agoGit 1.7.9.3 v1.7.9.3
Junio C Hamano [Mon, 5 Mar 2012 22:29:07 +0000 (14:29 -0800)]
Git 1.7.9.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/doc-merge-options' into maint
Junio C Hamano [Mon, 5 Mar 2012 22:28:14 +0000 (14:28 -0800)]
Merge branch 'jc/doc-merge-options' into maint

* jc/doc-merge-options:
  Documentation/merge-options.txt: group "ff" related options together

12 years agoMerge branch 'cn/maint-rev-list-doc' into maint
Junio C Hamano [Mon, 5 Mar 2012 22:27:36 +0000 (14:27 -0800)]
Merge branch 'cn/maint-rev-list-doc' into maint

* cn/maint-rev-list-doc:
  Documentation: use {asterisk} in rev-list-options.txt when needed

12 years agofsck doc: a minor typofix
Junio C Hamano [Mon, 5 Mar 2012 19:32:08 +0000 (11:32 -0800)]
fsck doc: a minor typofix

Reword the misspelled "squelch" noticed by Hermann Gaustere to say
"omit", which would sit better anyway.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agofast-import: zero all of 'struct tag' to silence valgrind
Thomas Rast [Mon, 5 Mar 2012 13:48:49 +0000 (14:48 +0100)]
fast-import: zero all of 'struct tag' to silence valgrind

When running t9300, valgrind (correctly) complains about an
uninitialized value in write_crash_report:

  ==2971== Use of uninitialised value of size 8
  ==2971==    at 0x4164F4: sha1_to_hex (hex.c:70)
  ==2971==    by 0x4073E4: die_nicely (fast-import.c:468)
  ==2971==    by 0x43284C: die (usage.c:86)
  ==2971==    by 0x40420D: main (fast-import.c:2731)
  ==2971==  Uninitialised value was created by a heap allocation
  ==2971==    at 0x4C29B3D: malloc (vg_replace_malloc.c:263)
  ==2971==    by 0x433645: xmalloc (wrapper.c:35)
  ==2971==    by 0x405DF5: pool_alloc (fast-import.c:619)
  ==2971==    by 0x407755: pool_calloc.constprop.14 (fast-import.c:634)
  ==2971==    by 0x403F33: main (fast-import.c:3324)

Fix this by zeroing all of the 'struct tag'.  We would only need to
zero out the 'sha1' field, but this way seems more future-proof.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomergetools: add a plug-in to support DeltaWalker
Tim Henigan [Mon, 5 Mar 2012 14:28:07 +0000 (09:28 -0500)]
mergetools: add a plug-in to support DeltaWalker

DeltaWalker is a non-free tool popular among some users.  Add a
plug-in to support it from difftool and mergetool.

Note that the $(pwd)/ in front of $MERGED should not be necessary.
However without it, DeltaWalker crashes with a JRE exception.

Signed-off-by: Tim Henigan <tim.henigan@gmail.com>
Helped-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoUpdate draft release notes to 1.7.10
Junio C Hamano [Mon, 5 Mar 2012 07:38:02 +0000 (23:38 -0800)]
Update draft release notes to 1.7.10

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jk/symbolic-ref-short'
Junio C Hamano [Mon, 5 Mar 2012 07:35:23 +0000 (23:35 -0800)]
Merge branch 'jk/symbolic-ref-short'

* jk/symbolic-ref-short:
  symbolic-ref --short: abbreviate the output unambiguously

12 years agoMerge branch 'jn/gitweb-hilite-regions'
Junio C Hamano [Mon, 5 Mar 2012 07:35:18 +0000 (23:35 -0800)]
Merge branch 'jn/gitweb-hilite-regions'

* jn/gitweb-hilite-regions:
  gitweb: Highlight matched part of shortened project description
  gitweb: Highlight matched part of project description when searching projects
  gitweb: Highlight matched part of project name when searching projects
  gitweb: Introduce esc_html_match_hl and esc_html_hl_regions

12 years agoMerge branch 'jc/am-3-nonstandard-popt'
Junio C Hamano [Mon, 5 Mar 2012 07:35:12 +0000 (23:35 -0800)]
Merge branch 'jc/am-3-nonstandard-popt'

* jc/am-3-nonstandard-popt:
  test: "am -3" can accept non-standard -p<num>
  am -3: allow nonstandard -p<num> option

12 years agoMake git-{pull,rebase} message without tracking information friendlier
Carlos Martín Nieto [Sun, 4 Mar 2012 04:41:26 +0000 (05:41 +0100)]
Make git-{pull,rebase} message without tracking information friendlier

The current message is too long and at too low a level for anybody
to understand it if they don't know about the configuration format
already.

The text about setting up a remote is superfluous and doesn't help
understand or recover from the error that has happened.  Show the
usage more prominently and explain how to set up the tracking
information. If there is only one remote, that name is used instead
of the generic <remote>.

Also simplify the message we print on detached HEAD to remove
unnecessary information which is better left for the documentation.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Mon, 5 Mar 2012 06:21:52 +0000 (22:21 -0800)]
Merge branch 'maint'

* maint:
  Update draft release notes to 1.7.9.3 for the last time
  http.proxy: also mention https_proxy and all_proxy
  t0300: work around bug in dash 0.5.6
  t5512 (ls-remote): modernize style
  tests: fix spurious error when run directly with Solaris /usr/xpg4/bin/sh

12 years agoUpdate draft release notes to 1.7.9.3 for the last time
Junio C Hamano [Mon, 5 Mar 2012 06:21:30 +0000 (22:21 -0800)]
Update draft release notes to 1.7.9.3 for the last time

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'cn/maint-branch-with-bad' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:17:52 +0000 (22:17 -0800)]
Merge branch 'cn/maint-branch-with-bad' into maint

* cn/maint-branch-with-bad:
  branch: don't assume the merge filter ref exists

Conflicts:
t/t3200-branch.sh

12 years agoMerge branch 'jn/maint-gitweb-invalid-regexp' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:17:47 +0000 (22:17 -0800)]
Merge branch 'jn/maint-gitweb-invalid-regexp' into maint

* jn/maint-gitweb-invalid-regexp:
  gitweb: Handle invalid regexp in regexp search

12 years agoMerge branch 'nd/maint-verify-objects' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:17:41 +0000 (22:17 -0800)]
Merge branch 'nd/maint-verify-objects' into maint

* nd/maint-verify-objects:
  rev-list: fix --verify-objects --quiet becoming --objects
  rev-list: remove BISECT_SHOW_TRIED flag

12 years agoMerge branch 'jk/maint-avoid-streaming-filtered-contents' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:16:40 +0000 (22:16 -0800)]
Merge branch 'jk/maint-avoid-streaming-filtered-contents' into maint

* jk/maint-avoid-streaming-filtered-contents:
  do not stream large files to pack when filters are in use
  teach dry-run convert_to_git not to require a src buffer
  teach convert_to_git a "dry run" mode

12 years agoMerge branch 'jb/filter-ignore-sigpipe' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:16:35 +0000 (22:16 -0800)]
Merge branch 'jb/filter-ignore-sigpipe' into maint

* jb/filter-ignore-sigpipe:
  Ignore SIGPIPE when running a filter driver

12 years agoMerge branch 'sp/smart-http-failure-to-push' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:16:33 +0000 (22:16 -0800)]
Merge branch 'sp/smart-http-failure-to-push' into maint

* sp/smart-http-failure-to-push:
  : Mask SIGPIPE on the command channel going to a transport helper
  disconnect from remote helpers more gently

Conflicts:
transport-helper.c

12 years agoMerge branch 'tr/maint-bundle-long-subject' into maint
Junio C Hamano [Mon, 5 Mar 2012 06:16:30 +0000 (22:16 -0800)]
Merge branch 'tr/maint-bundle-long-subject' into maint

* tr/maint-bundle-long-subject:
  t5704: match tests to modern style
  strbuf: improve strbuf_get*line documentation
  bundle: use a strbuf to scan the log for boundary commits
  bundle: put strbuf_readline_fd in strbuf.c with adjustments

12 years agol10n: Update zh_CN translation for 1.7.9.2
Jiang Xin [Mon, 5 Mar 2012 05:16:27 +0000 (13:16 +0800)]
l10n: Update zh_CN translation for 1.7.9.2

In order to show detailed dirty status of submodules in long format,
git stripped the last ", " from the concatenate sting by a two-byte
backstep. So for keeping the two-byte backstep valid, won't touch the
end ", " for translation.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
12 years agosubmodules: fix ambiguous absolute paths under Windows
Johannes Sixt [Sun, 4 Mar 2012 21:16:19 +0000 (22:16 +0100)]
submodules: fix ambiguous absolute paths under Windows

Under Windows the "git rev-parse --git-dir" and "pwd" commands may return
either drive-letter-colon or POSIX style paths. This makes module_clone()
behave badly because it expects absolute paths to always start with a '/'.

Fix that by always converting the "c:/" notation into "/c/" when computing
the relative paths from gitdir to the submodule work tree and back.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosubmodules: refactor computation of relative gitdir path
Jens Lehmann [Sun, 4 Mar 2012 21:15:36 +0000 (22:15 +0100)]
submodules: refactor computation of relative gitdir path

In module_clone() the rel_gitdir variable was computed differently when
"git rev-parse --git-dir" returned a relative path than when it returned
an absolute path. This is not optimal, as different code paths are used
depending on the return value of that command.

Fix that by reusing the differing path components computed for setting the
core.worktree config setting, which leaves a single code path for setting
both instead of having three and makes the code much shorter.

This also fixes the bug that in the computation of how many directories
have to be traversed up to hit the root directory of the submodule the
name of the submodule was used where the path should have been used. This
lead to problems after renaming submodules into another directory level.

Even though the "(cd $somewhere && pwd)" approach breaks the flexibility
of symlinks, that is no issue here as we have to have one relative path
pointing from the work tree to the gitdir and another pointing back, which
will never work anyway when a symlink along one of those paths is changed
because the directory it points to was moved.

Also add a test moving a submodule into a deeper directory to catch any
future breakage here and to document what has to be done when a submodule
needs to be moved until git mv learns to do that. Simply moving it to the
new location doesn't work, as the core.worktree and possibly the gitfile
setting too will be wrong. So it has to be removed from filesystem and
index, then the new location has to be added into the index and the
.gitmodules file has to be updated. After that a git submodule update will
check out the submodule at the new location.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosubmodules: always use a relative path from gitdir to work tree
Jens Lehmann [Sun, 4 Mar 2012 21:15:08 +0000 (22:15 +0100)]
submodules: always use a relative path from gitdir to work tree

Since recently a submodule with name <name> has its git directory in the
.git/modules/<name> directory of the superproject while the work tree
contains a gitfile pointing there. To make that work the git directory has
the core.worktree configuration set in its config file to point back to
the work tree.

That core.worktree is an absolute path set by the initial clone of the
submodule. A relative path is preferable here because it allows the
superproject to be moved around without invalidating that setting, so
compute and set that relative path after cloning or reactivating the
submodule.

This also fixes a bug when moving a submodule around inside the
superproject, as the current code forgot to update the setting to the new
submodule work tree location.

Enhance t7400 to ensure that future versions won't re-add absolute paths
by accident and that moving a superproject won't break submodules.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosubmodules: always use a relative path to gitdir
Jens Lehmann [Sun, 4 Mar 2012 21:14:30 +0000 (22:14 +0100)]
submodules: always use a relative path to gitdir

Since recently a submodule with name <name> has its git directory in the
.git/modules/<name> directory of the superproject while the work tree
contains a gitfile pointing there. When the submodule git directory needs
to be cloned because it is not found in .git/modules/<name> the clone
command will write an absolute path into the gitfile. When no clone is
necessary the git directory will be reactivated by the git-submodule.sh
script by writing a relative path into the gitfile.

This is inconsistent, as the behavior depends on the submodule having been
cloned before into the .git/modules of the superproject. A relative path
is preferable here because it allows the superproject to be moved around
without invalidating the gitfile. We do that by always writing the
relative path into the gitfile, which overwrites the absolute path the
clone command may have written there.

This is only the first step to make superprojects movable again like they
were before the separate-git-dir approach was introduced. The second step
is to use a relative path in core.worktree too.

Enhance t7400 to ensure that future versions won't re-add absolute paths
by accident.

While at it also replace an if/else construct evaluating the presence
of the 'reference' option with a single line of bash code.

Reported-by: Antony Male <antony.male@gmail.com>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>