Code

git.git
13 years agodo not read beyond end of malloc'd buffer
Jim Meyering [Fri, 20 May 2011 17:20:12 +0000 (19:20 +0200)]
do not read beyond end of malloc'd buffer

With diff.suppress-blank-empty=true, "git diff --word-diff" would
output data that had been read from uninitialized heap memory.
The problem was that fn_out_consume did not account for the
possibility of a line with length 1, i.e., the empty context line
that diff.suppress-blank-empty=true converts from " \n" to "\n".
Since it assumed there would always be a prefix character (the space),
it decremented "len" unconditionally, thus passing len=0 to emit_line,
which would then blindly call emit_line_0 with len=-1 which would
pass that value on to fwrite as SIZE_MAX.  Boom.

Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot4034 (diff --word-diff): add a minimum Perl drier test vector
Junio C Hamano [Tue, 18 Jan 2011 17:43:43 +0000 (09:43 -0800)]
t4034 (diff --word-diff): add a minimum Perl drier test vector

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot4034 (diff --word-diff): style suggestions
Jonathan Nieder [Tue, 11 Jan 2011 21:49:57 +0000 (15:49 -0600)]
t4034 (diff --word-diff): style suggestions

Rearrange code to be easier to browse:

 - first data
 - then functions
 - then test assertions

Mark up inline test vectors as

  cat >vector <<-\EOF
data
data
  EOF

for visual scannability.  Use words like "set up" for tests that set
up for other tests, to make it obvious which tests are safe to skip.
Use repeated function calls instead of a loop for the
language-specific tests, so the invocations can be easily tweaked
individually (for example if one starts to fail).

This means if you add a new subdirectory to t4034/, it will not be
automatically used.  I think that's worth it for the added
explicitness.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agouserdiff: simplify word-diff safeguard
Jonathan Nieder [Tue, 11 Jan 2011 21:48:50 +0000 (15:48 -0600)]
userdiff: simplify word-diff safeguard

git's diff-words support has a detail that can be a little dangerous:
any text not matched by a given language's tokenization pattern is
treated as whitespace and changes in such text would go unnoticed.
Therefore each of the built-in regexes allows a special token type
consisting of a single non-whitespace character [^[:space:]].

To make sure UTF-8 sequences remain human readable, the builtin
regexes also have a special token type for runs of bytes with the high
bit set.  In English, non-ASCII characters are usually isolated so
this is analogous to the [^[:space:]] pattern, except it matches a
single _multibyte_ character despite use of the C locale.

Unfortunately it is easy to make typos or forget entirely to include
these catch-all token types when adding support for new languages (see
v1.7.3.5~16, userdiff: fix typo in ruby and python word regexes,
2010-12-18).  Avoid this by including them automatically within the
PATTERNS and IPATTERN macros.

While at it, change the UTF-8 sequence token type to match exactly one
non-ASCII multi-byte character, rather than an arbitrary run of them.

Suggested-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot4034: bulk verify builtin word regex sanity
Thomas Rast [Sat, 18 Dec 2010 16:17:54 +0000 (17:17 +0100)]
t4034: bulk verify builtin word regex sanity

The builtin word regexes should be tested with some simple examples
against simple issues.  Do this in bulk.

Mainly due to a lack of language knowledge and inspiration, most of
the test cases (cpp, csharp, java, objc, pascal, php, python, ruby)
are directly based off a C operator precedence table to verify that
all operators are split correctly.  This means that they are probably
incomplete or inaccurate except for 'cpp' itself.

Still, they are good enough to already have uncovered a typo in the
python and ruby patterns.

'fortran' is based on my anecdotal knowledge of the DO10I parsing
rules, and thus probably useless.  The rest (bibtex, html, tex) are an
ad-hoc test of what I consider important splits in those languages.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.4-rc2 v1.7.4-rc2
Junio C Hamano [Thu, 13 Jan 2011 19:42:01 +0000 (11:42 -0800)]
Git 1.7.4-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/gitweb-no-logo'
Junio C Hamano [Thu, 13 Jan 2011 19:39:18 +0000 (11:39 -0800)]
Merge branch 'jn/gitweb-no-logo'

* jn/gitweb-no-logo:
  gitweb: make logo optional

13 years agoMerge branch 'jn/perl-funcname'
Junio C Hamano [Thu, 13 Jan 2011 19:38:05 +0000 (11:38 -0800)]
Merge branch 'jn/perl-funcname'

* jn/perl-funcname:
  userdiff/perl: catch BEGIN/END/... and POD as headers
  diff: funcname and word patterns for perl

13 years agoMerge branch 'sr/gitweb-hilite-more'
Junio C Hamano [Thu, 13 Jan 2011 19:36:12 +0000 (11:36 -0800)]
Merge branch 'sr/gitweb-hilite-more'

* sr/gitweb-hilite-more:
  gitweb: remove unnecessary test when closing file descriptor
  gitweb: add extensions to highlight feature map

13 years agoMerge branch 'rj/svn-test'
Junio C Hamano [Thu, 13 Jan 2011 19:36:05 +0000 (11:36 -0800)]
Merge branch 'rj/svn-test'

* rj/svn-test:
  lib-git-svn.sh: Move web-server handling code into separate function

13 years agoMerge branch 'rj/test-fixes'
Junio C Hamano [Thu, 13 Jan 2011 19:35:28 +0000 (11:35 -0800)]
Merge branch 'rj/test-fixes'

* rj/test-fixes:
  t4135-*.sh: Skip the "backslash" tests on cygwin
  t3032-*.sh: Do not strip CR from line-endings while grepping on MinGW
  t3032-*.sh: Pass the -b (--binary) option to sed on cygwin
  t6038-*.sh: Pass the -b (--binary) option to sed on cygwin

Conflicts:
t/t3032-merge-recursive-options.sh

13 years agoMerge branch 'jk/diff-driver-binary-doc'
Junio C Hamano [Thu, 13 Jan 2011 19:34:56 +0000 (11:34 -0800)]
Merge branch 'jk/diff-driver-binary-doc'

* jk/diff-driver-binary-doc:
  docs: explain diff.*.binary option

13 years agoMerge branch 'jn/t9010-work-around-broken-svnadmin'
Junio C Hamano [Thu, 13 Jan 2011 19:34:52 +0000 (11:34 -0800)]
Merge branch 'jn/t9010-work-around-broken-svnadmin'

* jn/t9010-work-around-broken-svnadmin:
  t9010: svnadmin can fail even if available

13 years agoMerge branch 'tr/submodule-relative-scp-url'
Junio C Hamano [Thu, 13 Jan 2011 19:34:39 +0000 (11:34 -0800)]
Merge branch 'tr/submodule-relative-scp-url'

* tr/submodule-relative-scp-url:
  submodule: fix relative url parsing for scp-style origin

13 years agoRelNotes/1.7.4: minor fixes
Michael J Gruber [Thu, 13 Jan 2011 09:35:34 +0000 (10:35 +0100)]
RelNotes/1.7.4: minor fixes

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot0000: quote TAP snippets in test code
Thomas Rast [Thu, 13 Jan 2011 11:30:23 +0000 (12:30 +0100)]
t0000: quote TAP snippets in test code

t0000 contains two snippets of actual test output.  This causes
problems when passing -v to the test[*]: the test infrastructure
echoes the tests before running them, and the TAP parser then sees
this test output and concludes that two tests failed and that the TAP
output was badly formatted.

Guard against this by quoting the output in the source.

[*] either by running 'make smoke' with GIT_TEST_OPTS=-v, or with
prove ./t0000-basic.sh :: -v

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 13 Jan 2011 05:26:51 +0000 (21:26 -0800)]
Merge branch 'maint'

* maint:
  commit: suggest --amend --reset-author to fix commiter identity

13 years agocommit: suggest --amend --reset-author to fix commiter identity
Matthieu Moy [Wed, 12 Jan 2011 18:29:14 +0000 (19:29 +0100)]
commit: suggest --amend --reset-author to fix commiter identity

Since the message advises to fix the configuration first, the
advantage of using this command is that it is cut-and-paste ready,
while using --author='...' requires the user to type his name and
email again.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot9157-*.sh: Make the svn version check more precise
Ramsay Jones [Mon, 10 Jan 2011 23:21:26 +0000 (23:21 +0000)]
t9157-*.sh: Make the svn version check more precise

These tests require an svn version 1.5 or newer to run correctly.
In particular, all 1.4.x versions and earlier are too old, so fix
up the case label regex to cover this range exactly.

[Fix provided by Anders Kaseorg <andersk@MIT.EDU>]

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Mon, 10 Jan 2011 18:39:38 +0000 (10:39 -0800)]
Merge branch 'maint'

* maint:
  Documentation/githooks: post-rewrite-copy-notes never existed
  Documentation/git-archive: spell --worktree-attributes correctly

13 years agoMerge branch 'maint-1.7.2' into maint
Junio C Hamano [Mon, 10 Jan 2011 18:39:28 +0000 (10:39 -0800)]
Merge branch 'maint-1.7.2' into maint

* maint-1.7.2:
  Documentation/githooks: post-rewrite-copy-notes never existed
  Documentation/git-archive: spell --worktree-attributes correctly

13 years agoMerge branch 'maint-1.7.1' into maint-1.7.2
Junio C Hamano [Mon, 10 Jan 2011 18:39:18 +0000 (10:39 -0800)]
Merge branch 'maint-1.7.1' into maint-1.7.2

* maint-1.7.1:
  Documentation/githooks: post-rewrite-copy-notes never existed
  Documentation/git-archive: spell --worktree-attributes correctly

13 years agoMerge branch 'maint-1.7.0' into maint-1.7.1
Junio C Hamano [Mon, 10 Jan 2011 18:39:04 +0000 (10:39 -0800)]
Merge branch 'maint-1.7.0' into maint-1.7.1

* maint-1.7.0:
  Documentation/git-archive: spell --worktree-attributes correctly

13 years agodocs: explain diff.*.binary option
Jeff King [Sun, 9 Jan 2011 20:10:04 +0000 (15:10 -0500)]
docs: explain diff.*.binary option

This was added long ago as part of the userdiff refactoring
for textconv, as internally it made the code simpler and
cleaner. However, there was never a concrete use case for
actually using the config variable.

Now that Matthieu Moy has provided such a use case, it's
easy to explain it using his example.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot9010: svnadmin can fail even if available
Jonathan Nieder [Thu, 6 Jan 2011 18:00:51 +0000 (12:00 -0600)]
t9010: svnadmin can fail even if available

If svn is built against one version of SQLite and run against another,
libsvn_subr needlessly errors out in operations that need to make a
commit.

That is clearly not a bug in git but let us consider the ramifications for
the test suite.  git-svn uses libsvn directly and is probably broken by
that bug; it is right for git-svn tests to fail.  The vcs-svn lib, on the
other hand, does not use libsvn and the test t9010 only uses svn to check
its work.  This points to two possible improvements:

 - do not disable most vcs-svn tests if svn is missing.
 - skip validation rather than failing it when svn fails.

Bring about both by putting the svn invocations into a single test that
builds a repo to compare the test-svn-fe result against.  The test will
always pass but only will set the new SVNREPO test prereq if svn succeeds;
and validation using that repo gets an SVNREPO prerequisite so it only
runs with working svn installations.

Works-around: http://bugs.debian.org/608925
Noticed-by: A Large Angry SCM <gitzilla@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
13 years agosubmodule: fix relative url parsing for scp-style origin
Thomas Rast [Mon, 10 Jan 2011 10:37:26 +0000 (11:37 +0100)]
submodule: fix relative url parsing for scp-style origin

The function resolve_relative_url was not prepared to deal with an
scp-style origin 'user@host:path' in the case where 'path' is only a
single component.  Fix this by extending the logic that strips one
path component from the $remoteurl.

Also add tests for both styles of URLs.

Noticed-by: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoDocumentation/githooks: post-rewrite-copy-notes never existed
Thomas Rast [Mon, 10 Jan 2011 12:42:23 +0000 (13:42 +0100)]
Documentation/githooks: post-rewrite-copy-notes never existed

The documentation for the post-rewrite hook contains a paragraph from
its early development, where the automatic notes copying facilities
were not part of the series and thus this had to be a hook.  Later
versions of the series implemented notes copying as a core feature.

Thus mentioning post-rewrite-copy-notes was never correct.  As the
other hooks do not have a "there is no default hook, but..." sentence
unless they ship a sample hook in either templates or contrib, we
simply remove the whole paragraph.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoDocumentation/git-archive: spell --worktree-attributes correctly
Thomas Rast [Mon, 10 Jan 2011 12:57:43 +0000 (13:57 +0100)]
Documentation/git-archive: spell --worktree-attributes correctly

The --worktree-attributes option was correctly documented in ba053ea
(archive: do not read .gitattributes in working directory,
2009-04-18).  However, later in 9b4c8b0 (archive documentation:
attributes are taken from the tree by default, 2010-02-10) the
misspelling "--work-tree-attributes" was used to refer to it.  Fix
this.

Noticed-by: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Sun, 9 Jan 2011 07:48:47 +0000 (23:48 -0800)]
Merge branch 'maint'

* maint:
  Mark gitk script executable

13 years agot4135-*.sh: Skip the "backslash" tests on cygwin
Ramsay Jones [Tue, 14 Dec 2010 18:37:43 +0000 (18:37 +0000)]
t4135-*.sh: Skip the "backslash" tests on cygwin

The BSLASHPSPEC tests (11-13) fail on cygwin, since you can't
create files containing an backslash character in the name.
In order to skip these tests, we simply stop (incorrectly)
asserting the BSLASHPSPEC prerequisite in test-lib.sh.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot3032-*.sh: Do not strip CR from line-endings while grepping on MinGW
Ramsay Jones [Tue, 14 Dec 2010 18:35:48 +0000 (18:35 +0000)]
t3032-*.sh: Do not strip CR from line-endings while grepping on MinGW

By default grep reads in text mode and converts CRLF into LF line
endings, which causes tests 4, 6 and 8 to fail. In a similar manner
to commit a94114ad  (Do not strip CR when grepping HTTP headers,
2010-09-12), we set (and export) the GREP_OPTIONS variable to -U so
that grep will use binary mode.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot3032-*.sh: Pass the -b (--binary) option to sed on cygwin
Ramsay Jones [Tue, 14 Dec 2010 18:34:29 +0000 (18:34 +0000)]
t3032-*.sh: Pass the -b (--binary) option to sed on cygwin

The test using the conflict_hunks helper function (test 9) fails
on cygwin, since sed (by default) throws away the CR from CRLF
line endings. This behaviour is undesirable, since the validation
code expects the CRLF line-ending to be present. In order to fix
the problem we pass the -b (--binary) option to sed, using the
SED_OPTIONS variable. We use the SED_STRIPS_CR prerequisite in the
conditional initialisation of SED_OPTIONS.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot6038-*.sh: Pass the -b (--binary) option to sed on cygwin
Ramsay Jones [Tue, 14 Dec 2010 18:32:12 +0000 (18:32 +0000)]
t6038-*.sh: Pass the -b (--binary) option to sed on cygwin

The tests using the fuzz_conflict helper function (tests 5-6)
fail on cygwin in the same way they used to on MinGW, prior
to commit ca02ad3. The solution is also the same; passing the
-b (--binary) option to sed, using the SED_OPTIONS variable.
We introduce a new prerequisite SED_STRIPS_CR to use in the
conditional initialisation of SED_OPTIONS, rather than MINGW.
The new prerequisite is set in test-lib.sh for both MinGW and
Cygwin.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMark gitk script executable
Anders Kaseorg [Fri, 7 Jan 2011 01:14:41 +0000 (20:14 -0500)]
Mark gitk script executable

The executable bit on gitk-git/gitk was lost (accidentally it seems) by
commit 62ba5143ec2ab9d4083669b1b1679355e7639cd5.  Put it back, so that
gitk can be run directly from a git.git checkout.

Note that the script is already executable in gitk.git, just not in
git.git.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot9157-*.sh: Add an svn version check
Ramsay Jones [Thu, 6 Jan 2011 18:29:23 +0000 (18:29 +0000)]
t9157-*.sh: Add an svn version check

Acked-by: Eric Wong <normalperson@yhbt.net>
Acked-by: Steven Walter <stevenrwalter@gmail.com>
Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
13 years agogit svn: fix the final example in man page
StephenB [Thu, 6 Jan 2011 19:06:51 +0000 (19:06 +0000)]
git svn: fix the final example in man page

'git-remote add' creates a remote.origin.fetch entry in the config, we
want to replace this entry rather than add another one (which will
cause 'git fetch' to error).

This adds 'git config --remove-section remote.origin' after the fetch
for encouraging users to only use "git svn" for future updates.

[ew: rewording of commit message for present tense]

Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: StephenB <mail4stb@gmail.com>
13 years agot3032: limit sed branch labels to 8 characters
Brandon Casey [Thu, 6 Jan 2011 00:30:03 +0000 (18:30 -0600)]
t3032: limit sed branch labels to 8 characters

POSIX leaves as unspecified the handling of labels greater than 8
characters.  Apparently, Sun decided to treat them as errors.  Make sed on
Solaris happy by trimming the length of labels to 8 characters.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot0001,t1510,t3301: use sane_unset which always returns with status 0
Brandon Casey [Thu, 6 Jan 2011 00:30:02 +0000 (18:30 -0600)]
t0001,t1510,t3301: use sane_unset which always returns with status 0

On some shells (like /usr/xpg4/bin/sh on Solaris), unset will exit
non-zero when passed the name of a variable that has not been set.  Use
sane_unset instead so that the return value of unset can be ignored while
the && linkage of the test script can be preserved.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotrace.c: ensure NULL is not passed to printf
Brandon Casey [Thu, 6 Jan 2011 00:30:01 +0000 (18:30 -0600)]
trace.c: ensure NULL is not passed to printf

GNU printf, and many others, will print the string "(null)" if a NULL
pointer is passed as the argument to a "%s" format specifier.  Some
implementations (like on Solaris) do not detect a NULL pointer and will
produce a segfault in this case.

So, fix this by ensuring that pointer variables do not contain the value
NULL.  Assign the string "(null)" to the variables are NULL.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.4-rc1 v1.7.4-rc1
Junio C Hamano [Wed, 5 Jan 2011 22:46:07 +0000 (14:46 -0800)]
Git 1.7.4-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint' to sync with 1.7.3.5
Junio C Hamano [Wed, 5 Jan 2011 22:50:33 +0000 (14:50 -0800)]
Merge branch 'maint' to sync with 1.7.3.5

13 years agoGit 1.7.3.5 v1.7.3.5
Junio C Hamano [Wed, 5 Jan 2011 22:49:19 +0000 (14:49 -0800)]
Git 1.7.3.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jn/svn-fe' (early part)
Junio C Hamano [Wed, 5 Jan 2011 21:34:43 +0000 (13:34 -0800)]
Merge branch 'jn/svn-fe' (early part)

* 'jn/svn-fe' (early part):
  vcs-svn: Error out for v3 dumps

Conflicts:
t/t9010-svn-fe.sh

13 years agoMerge branch 'ao/t9001-fix'
Junio C Hamano [Wed, 5 Jan 2011 21:31:25 +0000 (13:31 -0800)]
Merge branch 'ao/t9001-fix'

* ao/t9001-fix:
  t/t9001-send-email.sh: fix '&&' chain in some tests

13 years agoMerge branch 'pw/convert-pathname-substitution'
Junio C Hamano [Wed, 5 Jan 2011 21:31:01 +0000 (13:31 -0800)]
Merge branch 'pw/convert-pathname-substitution'

* pw/convert-pathname-substitution:
  t0021: avoid getting filter killed with SIGPIPE
  convert filter: supply path to external driver

13 years agoMerge branch 'mg/cvsimport'
Junio C Hamano [Wed, 5 Jan 2011 21:30:29 +0000 (13:30 -0800)]
Merge branch 'mg/cvsimport'

* mg/cvsimport:
  cvsimport: handle the parsing of uppercase config options
  cvsimport: partial whitespace cleanup

13 years agogitweb: remove unnecessary test when closing file descriptor
Sylvain Rabot [Thu, 30 Dec 2010 21:20:29 +0000 (22:20 +0100)]
gitweb: remove unnecessary test when closing file descriptor

It happens that closing file descriptor fails whereas the blob is
perfectly readable.  According to perlman the reasons could be:

   If the file handle came from a piped open, "close" will additionally
   return false if one of the other system calls involved fails, or if the
   program exits with non-zero status.  (If the only problem was that the
   program exited non-zero, $! will be set to 0.)  Closing a pipe also waits
   for the process executing on the pipe to complete, in case you want to
   look at the output of the pipe afterwards, and implicitly puts the exit
   status value of that command into $?.

   Prematurely closing the read end of a pipe (i.e. before the process writ-
   ing to it at the other end has closed it) will result in a SIGPIPE being
   delivered to the writer.  If the other end can't handle that, be sure to
   read all the data before closing the pipe.

In this case we don't mind that close fails.

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: add extensions to highlight feature map
Sylvain Rabot [Thu, 30 Dec 2010 21:20:28 +0000 (22:20 +0100)]
gitweb: add extensions to highlight feature map

added: sql, php5, phps, bash, zsh, ksh, mk, make

Signed-off-by: Sylvain Rabot <sylvain@abstraction.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot/t9001-send-email.sh: fix '&&' chain in some tests
Antonio Ospite [Tue, 4 Jan 2011 20:56:58 +0000 (21:56 +0100)]
t/t9001-send-email.sh: fix '&&' chain in some tests

t/README recommends chaining test assertions.

Signed-off-by: Antonio Ospite <ospite@studenti.unina.it>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agolib-git-svn.sh: Move web-server handling code into separate function
Ramsay Jones [Thu, 30 Dec 2010 19:44:48 +0000 (19:44 +0000)]
lib-git-svn.sh: Move web-server handling code into separate function

This library file is currently sourced by 57 test files, of which
only four may (optionally) start a web-server in order to access
the svn repo via an http url, rather than a file url.

In addition to isolating the current web-server handling code from
the majority of tests, in a new prepare_httpd function, we also
add some more error checking and reporting code to validate the
apache installation. Only those tests which attempt to start the
web-server, by calling start_httpd, will execute this code.

Note that it is important for start_httpd to return an error
indication, if prepare_httpd fails, so that the failure to use
the web-server, as requested by the user, should not go unnoticed.
(Unless the svnrepo variable is set to an http url at the end of
start_httpd, the remaining tests will use file urls, without
comment.)

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agocvsimport: handle the parsing of uppercase config options
Michael J Gruber [Wed, 29 Dec 2010 21:55:34 +0000 (22:55 +0100)]
cvsimport: handle the parsing of uppercase config options

The current code leads to

  fatal: bad config value for 'cvsimport.r' in .git/config

for a standard use case with cvsimport.r set.

cvsimport sets internal variables by checking the config for each
possible command line option. The problem is that config items are case
insensitive, so config.r and config.R are the same. The ugly error is
due to that fact that cvsimport expects a bool for -R (and thus
config.R) but a remote name for -r (and thus config.r).

Fix this by making cvsimport expect long names for uppercase options.

config options for cvsimport have been undocumented so far, though
present in the code and advertised in several tutorials. So one may read
"enhance" for "fix". Similarly, the names for the options are
"documented" in the code, waitiing for their lowercase equivalents to be
transformed into long config options, as well.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Tue, 4 Jan 2011 19:23:45 +0000 (11:23 -0800)]
Merge branch 'maint'

* maint:
  gitweb: skip logo in atom feed when there is none
  t9001: Fix test prerequisites

13 years agodaemon: support <directory> arguments again
Jonathan Nieder [Tue, 4 Jan 2011 04:04:46 +0000 (22:04 -0600)]
daemon: support <directory> arguments again

Ever since v1.7.4-rc0~125^2~8 (daemon: use run-command api for async
serving, 2010-11-04), git daemon spawns child processes instead of
forking to serve requests.  The child processes learn that they are
being run for this purpose from the presence of the --serve command
line flag.

When running with <ok_path> arguments, the --serve flag is treated
as one of the path arguments and the special child behavior does
not kick in.  So the child becomes an ordinary git daemon process,
notices that all the addresses it needs are in use, and exits with
the message "fatal: unable to allocate any listen sockets on port
9418".

Fix it by putting --serve at the beginning of the command line,
where the flag cannot be mistaken for a path argument.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Erik Faye-Lund <kusmabite@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoFix typos in the documentation
Ralf Wildenhues [Mon, 3 Jan 2011 19:03:34 +0000 (20:03 +0100)]
Fix typos in the documentation

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: make logo optional
Jonathan Nieder [Sat, 4 Sep 2010 00:45:09 +0000 (19:45 -0500)]
gitweb: make logo optional

Some sites may not want to have a logo at all.

While at it, use $cgi->img to simplify this code.  (CGI.pm learned
most HTML4 tags by version 2.79, so this should be portable to perl
5.8, though I haven't tested.)

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agogitweb: skip logo in atom feed when there is none
Jonathan Nieder [Sat, 4 Sep 2010 00:44:39 +0000 (19:44 -0500)]
gitweb: skip logo in atom feed when there is none

With v1.5.0-rc0~169 (gitweb: Fix Atom feed <logo>: it is $logo,
not $logo_url, 2006-12-04), the logo URI to be written to Atom
feeds was corrected but the case of no logo forgotten.

Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot9001: Fix test prerequisites
Robin H. Johnson [Wed, 29 Dec 2010 21:02:31 +0000 (21:02 +0000)]
t9001: Fix test prerequisites

Add in missing Perl prerequisites for new tests of send-email.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoGit 1.7.4-rc0 v1.7.4-rc0
Junio C Hamano [Tue, 28 Dec 2010 21:52:52 +0000 (13:52 -0800)]
Git 1.7.4-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Tue, 28 Dec 2010 21:50:11 +0000 (13:50 -0800)]
Merge branch 'maint'

* maint:
  Prepare for 1.7.3.5
  Fix false positives in t3404 due to SHELL=/bin/false
  close file on error in read_mmfile()

Conflicts:
RelNotes

13 years agoPrepare for 1.7.3.5
Junio C Hamano [Tue, 28 Dec 2010 21:48:54 +0000 (13:48 -0800)]
Prepare for 1.7.3.5

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jk/commit-die-on-bogus-ident' into maint
Junio C Hamano [Tue, 28 Dec 2010 21:45:12 +0000 (13:45 -0800)]
Merge branch 'jk/commit-die-on-bogus-ident' into maint

* jk/commit-die-on-bogus-ident:
  commit: die before asking to edit the log message
  ident: die on bogus date format

13 years agoMerge branch 'ks/blame-worktree-textconv-cached' into maint
Junio C Hamano [Tue, 28 Dec 2010 21:44:58 +0000 (13:44 -0800)]
Merge branch 'ks/blame-worktree-textconv-cached' into maint

* ks/blame-worktree-textconv-cached:
  fill_textconv(): Don't get/put cache if sha1 is not valid
  t/t8006: Demonstrate blame is broken when cachetextconv is on

13 years agoMerge branch 'jc/maint-rebase-rewrite-last-skip' into maint
Junio C Hamano [Tue, 28 Dec 2010 21:43:10 +0000 (13:43 -0800)]
Merge branch 'jc/maint-rebase-rewrite-last-skip' into maint

* jc/maint-rebase-rewrite-last-skip:
  rebase --skip: correctly wrap-up when skipping the last patch

13 years agoMerge branch 'jc/maint-am-abort-safely' into maint
Junio C Hamano [Tue, 28 Dec 2010 21:42:55 +0000 (13:42 -0800)]
Merge branch 'jc/maint-am-abort-safely' into maint

* jc/maint-am-abort-safely:
  am --abort: keep unrelated commits since the last failure and warn

13 years agoMerge branch 'kb/maint-status-cquote' into maint
Junio C Hamano [Tue, 28 Dec 2010 21:23:20 +0000 (13:23 -0800)]
Merge branch 'kb/maint-status-cquote' into maint

* kb/maint-status-cquote:
  status: Quote paths with spaces in short format

13 years agot9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
Brandon Casey [Wed, 22 Dec 2010 23:58:53 +0000 (15:58 -0800)]
t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

The '--no-chain-reply-to' option is a Getopt::Long boolean option. The
'--no-' prefix (as in --no-chain-reply-to) for boolean options is not
supported in Getopt::Long version 2.32 which was released with Perl 5.8.0.
This version only supports '--no' as in '--nochain-reply-to'.  More recent
versions of Getopt::Long, such as version 2.34, support either prefix. So
use the older form in the tests.

See also:

907a0b1e04ea31cb368e9422df93d8ebb0187914
84eeb687de7a6c7c42af3fb51b176e0f412a979e
3fee1fe87144360a1913eab86af9ad136c810076

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'jc/maint-rebase-rewrite-last-skip'
Junio C Hamano [Tue, 28 Dec 2010 19:26:59 +0000 (11:26 -0800)]
Merge branch 'jc/maint-rebase-rewrite-last-skip'

* jc/maint-rebase-rewrite-last-skip:
  rebase --skip: correctly wrap-up when skipping the last patch

13 years agoMerge branch 'nd/setup'
Junio C Hamano [Tue, 28 Dec 2010 19:26:55 +0000 (11:26 -0800)]
Merge branch 'nd/setup'

* nd/setup: (47 commits)
  setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd
  git.txt: correct where --work-tree path is relative to
  Revert "Documentation: always respect core.worktree if set"
  t0001: test git init when run via an alias
  Remove all logic from get_git_work_tree()
  setup: rework setup_explicit_git_dir()
  setup: clean up setup_discovered_git_dir()
  t1020-subdirectory: test alias expansion in a subdirectory
  setup: clean up setup_bare_git_dir()
  setup: limit get_git_work_tree()'s to explicit setup case only
  Use git_config_early() instead of git_config() during repo setup
  Add git_config_early()
  git-rev-parse.txt: clarify --git-dir
  t1510: setup case #31
  t1510: setup case #30
  t1510: setup case #29
  t1510: setup case #28
  t1510: setup case #27
  t1510: setup case #26
  t1510: setup case #25
  ...

13 years agoFix false positives in t3404 due to SHELL=/bin/false
Robin H. Johnson [Mon, 27 Dec 2010 08:03:43 +0000 (08:03 +0000)]
Fix false positives in t3404 due to SHELL=/bin/false

If the user's shell in NSS passwd is /bin/false (eg as found during Gentoo's
package building), the git-rebase exec tests will fail, because they call
$SHELL around the command, and in the existing testcase, $SHELL was not being
cleared sufficently.

This lead to false positive failures of t3404 on systems where the package
build user was locked down as noted above.

Signed-off-by: "Robin H. Johnson" <robbat2@gentoo.org>
X-Gentoo-Bug: 349083
X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=349083
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agouserdiff/perl: catch BEGIN/END/... and POD as headers
Junio C Hamano [Mon, 27 Dec 2010 17:19:38 +0000 (09:19 -0800)]
userdiff/perl: catch BEGIN/END/... and POD as headers

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agodiff: funcname and word patterns for perl
Jonathan Nieder [Sun, 26 Dec 2010 09:07:31 +0000 (03:07 -0600)]
diff: funcname and word patterns for perl

The default function name discovery already works quite well for Perl
code... with the exception of here-documents (or rather their ending).

 sub foo {
print <<END
 here-document
 END
return 1;
 }

The default funcname pattern treats the unindented END line as a
function declaration and puts it in the @@ line of diff and "grep
--show-function" output.

With a little knowledge of perl syntax, we can do better.  You can
try it out by adding "*.perl diff=perl" to the gitattributes file.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosetup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd
Nguyễn Thái Ngọc Duy [Mon, 27 Dec 2010 01:26:04 +0000 (08:26 +0700)]
setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd

When setup_work_tree() is called, it moves cwd to $GIT_WORK_TREE and
makes internal copy of $GIT_WORK_TREE absolute. The environt variable,
if set by user, remains unchanged. If the variable is relative, it is
no longer correct because its base dir has changed.

Instead of making $GIT_WORK_TREE absolute too, we just say "." and let
subsequent git processes handle it.

Reported-by: Michel Briand <michelbriand@free.fr>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'rs/maint-diff-fd-leak' into maint
Junio C Hamano [Sun, 26 Dec 2010 19:18:39 +0000 (11:18 -0800)]
Merge branch 'rs/maint-diff-fd-leak' into maint

* rs/maint-diff-fd-leak:
  close file on error in read_mmfile()

13 years agoclose file on error in read_mmfile()
René Scharfe [Sat, 25 Dec 2010 12:38:46 +0000 (13:38 +0100)]
close file on error in read_mmfile()

Reported in http://qa.debian.org/daca/cppcheck/sid/git_1.7.2.3-2.2.html
and in http://thread.gmane.org/gmane.comp.version-control.git/123042.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'rj/maint-difftool-cygwin-workaround'
Junio C Hamano [Thu, 23 Dec 2010 20:51:11 +0000 (12:51 -0800)]
Merge branch 'rj/maint-difftool-cygwin-workaround'

* rj/maint-difftool-cygwin-workaround:
  difftool: Fix failure on Cygwin

13 years agoMerge branch 'maint'
Junio C Hamano [Thu, 23 Dec 2010 04:33:12 +0000 (20:33 -0800)]
Merge branch 'maint'

* maint:
  test-lib.sh/test_decode_color(): use octal not hex in awk script

13 years agoMakefile: add NO_FNMATCH_CASEFOLD to IRIX sections
Brandon Casey [Wed, 22 Dec 2010 23:58:51 +0000 (15:58 -0800)]
Makefile: add NO_FNMATCH_CASEFOLD to IRIX sections

IRIX's fnmatch() does not support the GNU FNM_CASEFOLD extension, so set
NO_FNMATCH_CASEFOLD so that the internal fnmatch implementation will be
used.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agotest-lib.sh/test_decode_color(): use octal not hex in awk script
Brandon Casey [Wed, 22 Dec 2010 23:58:52 +0000 (15:58 -0800)]
test-lib.sh/test_decode_color(): use octal not hex in awk script

POSIX awk seems to explicitly not support hexadecimal escape sequences.

From http://pubs.opengroup.org/onlinepubs/009695399/:

   Regular expressions in awk have been extended somewhat...
   One sequence that is not supported is hexadecimal value escapes
   beginning with '\x'.

This affects the awk on IRIX 6.5, and causes t4015.56 to fail.
Use octal instead.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agorebase --skip: correctly wrap-up when skipping the last patch
Junio C Hamano [Thu, 23 Dec 2010 00:50:28 +0000 (16:50 -0800)]
rebase --skip: correctly wrap-up when skipping the last patch

When "rebase --skip" is used to skip the last patch in the series, the
code to wrap up the rewrite by copying the notes from old to new commits
and also by running the post-rewrite hook was bypassed.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot0021: avoid getting filter killed with SIGPIPE
Junio C Hamano [Wed, 22 Dec 2010 23:18:47 +0000 (15:18 -0800)]
t0021: avoid getting filter killed with SIGPIPE

The fake filter did not read from the standard input at all,
which caused the calling side to die with SIGPIPE, depending
on the timing.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'rj/maint-test-fixes'
Junio C Hamano [Wed, 22 Dec 2010 22:41:26 +0000 (14:41 -0800)]
Merge branch 'rj/maint-test-fixes'

* rj/maint-test-fixes:
  t9501-*.sh: Fix a test failure on Cygwin
  lib-git-svn.sh: Add check for mis-configured web server variables
  lib-git-svn.sh: Avoid setting web server variables unnecessarily
  t9142: Move call to start_httpd into the setup test
  t3600-rm.sh: Don't pass a non-existent prereq to test #15

13 years agoMerge branch 'jc/maint-am-abort-safely'
Junio C Hamano [Wed, 22 Dec 2010 22:41:19 +0000 (14:41 -0800)]
Merge branch 'jc/maint-am-abort-safely'

* jc/maint-am-abort-safely:
  am --abort: keep unrelated commits since the last failure and warn

13 years agoMerge branch 'jk/commit-die-on-bogus-ident'
Junio C Hamano [Wed, 22 Dec 2010 22:41:14 +0000 (14:41 -0800)]
Merge branch 'jk/commit-die-on-bogus-ident'

* jk/commit-die-on-bogus-ident:
  commit: die before asking to edit the log message
  ident: die on bogus date format

Conflicts:
builtin/commit.c

13 years agoMerge branch 'pd/bash-4-completion'
Junio C Hamano [Wed, 22 Dec 2010 22:40:55 +0000 (14:40 -0800)]
Merge branch 'pd/bash-4-completion'

* pd/bash-4-completion:
  bash: simple reimplementation of _get_comp_words_by_ref
  bash: get --pretty=m<tab> completion to work with bash v4

Conflicts:
contrib/completion/git-completion.bash

13 years agoMerge branch 'nd/maint-fix-add-typo-detection'
Junio C Hamano [Wed, 22 Dec 2010 22:40:26 +0000 (14:40 -0800)]
Merge branch 'nd/maint-fix-add-typo-detection'

* nd/maint-fix-add-typo-detection:
  Revert "excluded_1(): support exclude files in index"
  unpack-trees: fix sparse checkout's "unable to match directories"
  unpack-trees: move all skip-worktree checks back to unpack_trees()
  dir.c: add free_excludes()
  cache.h: realign and use (1 << x) form for CE_* constants

13 years agoMerge branch 'tf/commit-list-prefix'
Junio C Hamano [Wed, 22 Dec 2010 22:40:17 +0000 (14:40 -0800)]
Merge branch 'tf/commit-list-prefix'

* tf/commit-list-prefix:
  commit: Add commit_list prefix in two function names.

Conflicts:
sha1_name.c

13 years agogit.txt: correct where --work-tree path is relative to
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:43 +0000 (22:32 +0700)]
git.txt: correct where --work-tree path is relative to

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoRevert "Documentation: always respect core.worktree if set"
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:42 +0000 (22:32 +0700)]
Revert "Documentation: always respect core.worktree if set"

This reverts commit f5e025a9d5b35e24768475f6890b836ce0d5ed15.

The commit reflected what the code did. But the code did that because
it had bugs.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot0001: test git init when run via an alias
Jonathan Nieder [Fri, 26 Nov 2010 15:32:41 +0000 (22:32 +0700)]
t0001: test git init when run via an alias

Add some tests to document the correct behavior of (possibly aliased)
init when run within and outside a git directory.

If I set up a simple git alias “quietinit = init --quiet”, usually it
will work just like ‘git init --quiet’.

There are some differences, unfortunately, since in the process of
checking for aliases, git has to look for a .git/config file.  If ‘git
quietinit’ is run from a subdirectory of an existing git repository,
that repository’s configuration will affect the configuration of the
new repository.  In particular, the new repository can inherit
bogus values for core.bare and core.worktree.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoRemove all logic from get_git_work_tree()
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:40 +0000 (22:32 +0700)]
Remove all logic from get_git_work_tree()

This logic is now only used by cmd_init_db(). setup_* functions do not
rely on it any more. Move all the logic to cmd_init_db() and turn
get_git_work_tree() into a simple function.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosetup: rework setup_explicit_git_dir()
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:39 +0000 (22:32 +0700)]
setup: rework setup_explicit_git_dir()

This function is the most complex one among the three setup_*
functions because all GIT_DIR, GIT_WORK_TREE, core.worktree and
core.bare are involved.

Because core.worktree is only effective inside
setup_explicit_git_dir() and the extra code in setup_git_directory()
is to handle that. The extra code can now be retired.

Also note that setup_explicit assignment is removed, worktree setting
is no longer decided by get_git_work_tree(). get_git_work_tree() will
be simplified in the next commit.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosetup: clean up setup_discovered_git_dir()
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:38 +0000 (22:32 +0700)]
setup: clean up setup_discovered_git_dir()

If core.bare is true, discard the discovered worktree, move back to
original cwd.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agot1020-subdirectory: test alias expansion in a subdirectory
Michael J Gruber [Fri, 26 Nov 2010 15:32:37 +0000 (22:32 +0700)]
t1020-subdirectory: test alias expansion in a subdirectory

Add a test for alias expansion in a subdirectory of the worktree.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosetup: clean up setup_bare_git_dir()
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:36 +0000 (22:32 +0700)]
setup: clean up setup_bare_git_dir()

work_tree_env argument is removed because this function does not need
it. GIT_WORK_TREE is only effective inside setup_explicit_git_dir.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agosetup: limit get_git_work_tree()'s to explicit setup case only
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:35 +0000 (22:32 +0700)]
setup: limit get_git_work_tree()'s to explicit setup case only

get_git_work_tree() takes input as core.worktree, core.bare,
GIT_WORK_TREE and decides correct worktree setting.

Unfortunately it does not do its job well. core.worktree and
GIT_WORK_TREE should only be taken into account, if GIT_DIR is set
(which is handled by setup_explicit_git_dir). For other setup cases,
only core.bare matters.

Add a temporary variable setup_explicit to adjust get_git_work_tree()
behavior as such. This variable will be gone once setup_* rework is
done.

Also remove is_bare_repository_cfg check in set_git_work_tree() to
ease the rework. We are going to check for core.bare and core.worktree
early before setting worktree. For example, if core.bare is true, no
need to set worktree.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoUse git_config_early() instead of git_config() during repo setup
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:34 +0000 (22:32 +0700)]
Use git_config_early() instead of git_config() during repo setup

When git_config() is called, either git_dir has already been set (by
$GIT_DIR env or set_git_dir()), or it will default git_dir to ".git".

git_config_early() gives setup functions more freedom because it does
not require git_dir. Give it a config path, it will happily examine
it.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoAdd git_config_early()
Nguyễn Thái Ngọc Duy [Fri, 26 Nov 2010 15:32:33 +0000 (22:32 +0700)]
Add git_config_early()

This version of git_config() will be used during repository setup.
As a repository is being set up, $GIT_DIR is not nailed down yet,
git_pathdup() should not be used to get $GIT_DIR/config.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoconvert filter: supply path to external driver
Pete Wyckoff [Wed, 22 Dec 2010 14:40:13 +0000 (06:40 -0800)]
convert filter: supply path to external driver

Filtering to support keyword expansion may need the name of
the file being filtered.  In particular, to support p4 keywords
like

    $File: //depot/product/dir/script.sh $

the smudge filter needs to know the name of the file it is
smudging.

Allow "%f" in the custom filter command line specified in the
configuration.  This will be substituted by the filename
inside a single-quote pair to be passed to the shell.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 years agoMerge branch 'maint'
Junio C Hamano [Tue, 21 Dec 2010 22:45:28 +0000 (14:45 -0800)]
Merge branch 'maint'

* maint:
  t0050: fix printf format strings for portability
  t3419-*.sh: Fix arithmetic expansion syntax error

13 years agoMerge branch 'ks/blame-worktree-textconv-cached'
Junio C Hamano [Tue, 21 Dec 2010 22:30:52 +0000 (14:30 -0800)]
Merge branch 'ks/blame-worktree-textconv-cached'

* ks/blame-worktree-textconv-cached:
  fill_textconv(): Don't get/put cache if sha1 is not valid
  t/t8006: Demonstrate blame is broken when cachetextconv is on