git.git
11 years agoGit 1.7.12-rc1 v1.7.12-rc1
Junio C Hamano [Mon, 30 Jul 2012 20:00:03 +0000 (13:00 -0700)]
Git 1.7.12-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with 1.7.11.4
Junio C Hamano [Mon, 30 Jul 2012 20:17:31 +0000 (13:17 -0700)]
Sync with 1.7.11.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.7.11.4 v1.7.11.4
Junio C Hamano [Mon, 30 Jul 2012 20:09:25 +0000 (13:09 -0700)]
Git 1.7.11.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jk/maint-commit-document-editmsg' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:05:36 +0000 (13:05 -0700)]
Merge branch 'jk/maint-commit-document-editmsg' into maint

"$GIT_DIR/COMMIT_EDITMSG" file that is used to hold the commit log
message user edits was not documented.

* jk/maint-commit-document-editmsg:
  commit: document the temporary commit message file

11 years agoMerge branch 'jk/maint-advise-vaddf' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:05:25 +0000 (13:05 -0700)]
Merge branch 'jk/maint-advise-vaddf' into maint

The advise() function did not use varargs correctly to format
its message.

* jk/maint-advise-vaddf:
  advice: pass varargs to strbuf_vaddf, not strbuf_addf

11 years agoMerge branch 'kk/maint-commit-tree' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:05:13 +0000 (13:05 -0700)]
Merge branch 'kk/maint-commit-tree' into maint

"git commit-tree" learned a more natural "-p <parent> <tree>" order
of arguments long time ago, but recently forgot it by mistake.

* kk/maint-commit-tree:
  Revert "git-commit-tree(1): update synopsis"
  commit-tree: resurrect command line parsing updates

11 years agoMerge branch 'jv/maint-no-ext-diff' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:04:59 +0000 (13:04 -0700)]
Merge branch 'jv/maint-no-ext-diff' into maint

"git diff --no-ext-diff" did not output anything for a typechange
filepair when GIT_EXTERNAL_DIFF is in effect.

* jv/maint-no-ext-diff:
  diff: test precedence of external diff drivers
  diff: correctly disable external_diff with --no-ext-diff

11 years agoMerge branch 'pg/maint-1.7.9-am-where-is-patch' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:04:39 +0000 (13:04 -0700)]
Merge branch 'pg/maint-1.7.9-am-where-is-patch' into maint

When "git am" failed, old timers knew to check .git/rebase-apply/patch
to see what went wrong, but we never told the users about it.

* pg/maint-1.7.9-am-where-is-patch:
  am: indicate where a failed patch is to be found

11 years agoMerge branch 'jl/maint-1.7.10-recurse-submodules-with-symlink' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:04:18 +0000 (13:04 -0700)]
Merge branch 'jl/maint-1.7.10-recurse-submodules-with-symlink' into maint

When "git submodule add" clones a submodule repository, it can get
confused where to store the resulting submodule repository in the
superproject's .git/ directory when there is a symbolic link in the
path to the current directory.

* jl/maint-1.7.10-recurse-submodules-with-symlink:
  submodules: don't stumble over symbolic links when cloning recursively

11 years agoMerge branch 'jc/maint-filter-branch-epoch-date' into maint
Junio C Hamano [Mon, 30 Jul 2012 20:03:40 +0000 (13:03 -0700)]
Merge branch 'jc/maint-filter-branch-epoch-date' into maint

In 1.7.9 era, we taught "git rebase" about the raw timestamp format
but we did not teach the same trick to "filter-branch", which rolled
a similar logic on its own.

* jc/maint-filter-branch-epoch-date:
  t7003: add test to filter a branch with a commit at epoch
  date.c: Fix off by one error in object-header date parsing
  filter-branch: do not forget the '@' prefix to force git-timestamp

11 years agoMerge branch 'rj/maint-grep-remove-redundant-test'
Junio C Hamano [Mon, 30 Jul 2012 19:56:42 +0000 (12:56 -0700)]
Merge branch 'rj/maint-grep-remove-redundant-test'

"git grep" stopped spawning an external "grep" long time ago, but a
duplicated test to check internal and external "grep" was left
behind.

* rj/maint-grep-remove-redundant-test:
  t7810-*.sh: Remove redundant test

11 years agoMerge branch 'dg/submodule-in-dismembered-working-tree'
Junio C Hamano [Mon, 30 Jul 2012 19:56:25 +0000 (12:56 -0700)]
Merge branch 'dg/submodule-in-dismembered-working-tree'

Finishing touches to the new test script.

* dg/submodule-in-dismembered-working-tree:
  t7409: make sure submodule is initialized and updated in more detail

11 years agot7409: make sure submodule is initialized and updated in more detail
Daniel Graña [Mon, 30 Jul 2012 17:51:59 +0000 (14:51 -0300)]
t7409: make sure submodule is initialized and updated in more detail

The earlier test did not even make sure that the correct commit is
checked out in the submodule directory.  Inspect the result in a bit
more detail.

Signed-off-by: Daniel Graña <dangra@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'hv/link-alt-odb-entry'
Junio C Hamano [Mon, 30 Jul 2012 19:55:01 +0000 (12:55 -0700)]
Merge branch 'hv/link-alt-odb-entry'

The code to avoid mistaken attempt to add the object directory
itself as its own alternate could read beyond end of a string while
comparison.

* hv/link-alt-odb-entry:
  link_alt_odb_entry: fix read over array bounds reported by valgrind

11 years agoAdd explanatory comment for transport-helpers refs mapping.
Florian Achleitner [Mon, 30 Jul 2012 14:31:18 +0000 (16:31 +0200)]
Add explanatory comment for transport-helpers refs mapping.

The patch below adds a comment to fetch_with_import() explaining the
loop that saves the fetched commit names after 'git fast-import' has
done its work.  It avoids some confusion about which refs the
fast-import stream is supposed to use to write its result.

Signed-off-by: Florian Achleitner <florian.achleitner.2.6.31@gmail.com>
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot7810-*.sh: Remove redundant test
Ramsay Jones [Sat, 28 Jul 2012 18:50:49 +0000 (19:50 +0100)]
t7810-*.sh: Remove redundant test

Since commit bbc09c22 ("grep: rip out support for external grep",
12-01-2010), test number 60 ("grep -C1 hunk mark between files") is
essentially the same as test number 59.

Test 59 was intended to verify the behaviour of git-grep resulting
from multiple invocations of an external grep. As part of the test,
it creates and adds 1024 files to the index, which is now wasted
effort.

Remove test 59, since it is now redundant.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot1100-*.sh: Fix an intermittent test failure
Ramsay Jones [Sat, 28 Jul 2012 18:48:06 +0000 (19:48 +0100)]
t1100-*.sh: Fix an intermittent test failure

In particular, the final test ('flags and then non flags') fails
intermittently, depending on how much time elapsed between the
invocations of "git commit-tree" when creating the commits which
later have their commit id's compared. For example, if the commits
for childid-3 and childid-4 are created 1 or more seconds apart,
then the commits, which would otherwise be identical, will have
different commit id's.

In order to make the test reproducible, we remove the variability
by setting the author and committer times to a well defined state.
We accomplish this with a single call to 'test_tick' at the start
of the test.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agolink_alt_odb_entry: fix read over array bounds reported by valgrind
Heiko Voigt [Sat, 28 Jul 2012 15:46:36 +0000 (17:46 +0200)]
link_alt_odb_entry: fix read over array bounds reported by valgrind

pfxlen can be longer than the path in objdir when relative_base
contains the path to gits object directory.  Here we are interested
in checking if ent->base[] (the part that corresponds to .git/objects)
is the same string as objdir, and the code NUL-terminated ent->base[]
to

LEADING PATH\0XX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\0

in preparation for these "duplicate check" step (before we return
from the function, the first NUL is turned into '/' so that we can
fill XX when probing for loose objects).  All we need to do is to
compare the string with the path to our object directory.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot: add missing executable bit to t7409
Jeff King [Sat, 28 Jul 2012 15:18:29 +0000 (11:18 -0400)]
t: add missing executable bit to t7409

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUpdate draft release notes to 1.7.12
Junio C Hamano [Sat, 28 Jul 2012 05:25:19 +0000 (22:25 -0700)]
Update draft release notes to 1.7.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'extract-remaining' of git://git.bogomips.org/git-svn
Junio C Hamano [Sat, 28 Jul 2012 04:48:27 +0000 (21:48 -0700)]
Merge branch 'extract-remaining' of git://git.bogomips.org/git-svn

* 'extract-remaining' of git://git.bogomips.org/git-svn:
  Extract Git::SVN::GlobSpec from git-svn.
  Move Git::IndexInfo into its own file.
  Load all the modules in one place and before running code.
  Extract Git::SVN::Migration from git-svn.
  Prepare Git::SVN::Migration for extraction from git-svn.
  Extract Git::SVN::Log from git-svn.
  Prepare Git::SVN::Log for extraction from git-svn.

11 years agoMerge git://git.bogomips.org/git-svn
Junio C Hamano [Sat, 28 Jul 2012 04:18:09 +0000 (21:18 -0700)]
Merge git://git.bogomips.org/git-svn

* git://git.bogomips.org/git-svn:
  Move initialization of Git::SVN variables into Git::SVN.
  Extract Git::SVN from git-svn into its own .pm file.
  Prepare Git::SVN for extraction into its own file.
  Extract some utilities from git-svn to allow extracting Git::SVN.
  perl: detect new files in MakeMaker builds
  The Makefile.PL will now find .pm files itself.
  Don't lose Error.pm if $@ gets clobbered.
  Quiet warning if Makefile.PL is run with -w and no --localedir

11 years agoMerge branch 'jk/autoident-test'
Junio C Hamano [Sat, 28 Jul 2012 04:17:00 +0000 (21:17 -0700)]
Merge branch 'jk/autoident-test'

Fix test breakages by a builder who does not have a valid user name
in his /etc/password entry.

* jk/autoident-test:
  t7502: test early quit from commit with bad ident
  t7502: handle systems where auto-identity is broken
  t7502: drop confusing test_might_fail call
  t7502: narrow checks for author/committer name in template
  t7502: properly quote GIT_EDITOR
  t7502: clean up fake_editor tests

11 years agoMerge branch 'jk/help-plug-memleak'
Junio C Hamano [Sat, 28 Jul 2012 04:16:45 +0000 (21:16 -0700)]
Merge branch 'jk/help-plug-memleak'

Plug a few trivial memory leaks.

* jk/help-plug-memleak:
  help.c::exclude_cmds(): plug a leak
  help.c::uniq: plug a leak

11 years agoMerge branch 'dg/submodule-in-dismembered-working-tree'
Junio C Hamano [Sat, 28 Jul 2012 04:13:46 +0000 (21:13 -0700)]
Merge branch 'dg/submodule-in-dismembered-working-tree'

In a superproject that has repository outside of its working tree,
"git submodule add" failed to clone a new submodule, as GIT_DIR and
GIT_WORK_TREE environment variables necessary to work in such a
superproject interfered with access to the submodule repository.

* dg/submodule-in-dismembered-working-tree:
  git-submodule: work with GIT_DIR/GIT_WORK_TREE

11 years agoMerge branch 'jk/maint-checkout-orphan-check-fix'
Junio C Hamano [Sat, 28 Jul 2012 04:11:33 +0000 (21:11 -0700)]
Merge branch 'jk/maint-checkout-orphan-check-fix'

"git checkout <branchname>" to come back from a detached HEAD state
incorrectly computed reachability of the detached HEAD, resulting in
unnecessary warnings.

* jk/maint-checkout-orphan-check-fix:
  checkout: don't confuse ref and object flags

11 years agoExtract Git::SVN::GlobSpec from git-svn.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:06 +0000 (17:26 -0700)]
Extract Git::SVN::GlobSpec from git-svn.

Straight cut & paste.  That's the last class.

* Make Git::SVN load it on its own, its the only thing that needs it.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoMove Git::IndexInfo into its own file.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:05 +0000 (17:26 -0700)]
Move Git::IndexInfo into its own file.

Straight cut & paste.  Didn't require any fixing.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoLoad all the modules in one place and before running code.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:04 +0000 (17:26 -0700)]
Load all the modules in one place and before running code.

Just makes the code easier to follow.  No functional change.

Also eliminate an unused lexical $SVN.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoExtract Git::SVN::Migration from git-svn.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:03 +0000 (17:26 -0700)]
Extract Git::SVN::Migration from git-svn.

Straight cut & paste.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoPrepare Git::SVN::Migration for extraction from git-svn.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:02 +0000 (17:26 -0700)]
Prepare Git::SVN::Migration for extraction from git-svn.

* Load Git command functions on its own.
* Load Git::SVN modules on its own.

Drive by refactorings...
* Use our() instead of use vars.
* Eliminate the auto loading of Git functions.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoExtract Git::SVN::Log from git-svn.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:01 +0000 (17:26 -0700)]
Extract Git::SVN::Log from git-svn.

Straight cut & paste.

Also noticed Git::SVN::Ra wasn't in the compile test.  It is now.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoPrepare Git::SVN::Log for extraction from git-svn.
Michael G. Schwern [Fri, 27 Jul 2012 00:26:00 +0000 (17:26 -0700)]
Prepare Git::SVN::Log for extraction from git-svn.

* Load Git command functions itself.

* Can't access the git-svn switch lexical any more, but its only used by
  Git::SVN::Log so turn it into a Git::SVN::Log global.

* Load Git::SVN as needed.  No need to load it always, its only used twice.

* Moved a state variable to the routine it's used for. (Drive by refactoring)

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoMove initialization of Git::SVN variables into Git::SVN.
Michael G. Schwern [Thu, 26 Jul 2012 23:22:25 +0000 (16:22 -0700)]
Move initialization of Git::SVN variables into Git::SVN.

Also it can compile on its own now, yay!

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoExtract Git::SVN from git-svn into its own .pm file.
Michael G. Schwern [Thu, 26 Jul 2012 23:22:24 +0000 (16:22 -0700)]
Extract Git::SVN from git-svn into its own .pm file.

Except for adding the 1; at the end, this is a straight copy & paste.

Tests still pass, but its doubtful Git::SVN will compile on its own
without git-svn being loaded.  Next commit will fix that.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoPrepare Git::SVN for extraction into its own file.
Michael G. Schwern [Thu, 26 Jul 2012 23:22:23 +0000 (16:22 -0700)]
Prepare Git::SVN for extraction into its own file.

This means it should be able to load without git-svn being loaded.

* Load Git.pm on its own and all the needed command functions.

* It needs to grab at a git-svn lexical $_prefix representing the --prefix
  option.  Provide opt_prefix() for that.  This is a refactoring artifact.
  The prefix should really be passed into Git::SVN->new.

* Unqualify unnecessarily fully qualified globals like
  $Git::SVN::default_repo_id.

* Lexically isolate the class just to make sure nothing is leaking out.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoExtract some utilities from git-svn to allow extracting Git::SVN.
Michael G. Schwern [Thu, 26 Jul 2012 23:22:22 +0000 (16:22 -0700)]
Extract some utilities from git-svn to allow extracting Git::SVN.

Put them in a new module called Git::SVN::Utils.  Yeah, not terribly
original and it will be a dumping ground.  But its better than having
them in the main git-svn program.  At least they can be documented
and tested.

* fatal() is used by many classes.
* Change the $can_compress lexical into a function.

This should be enough to extract Git::SVN.

Signed-off-by: Michael G. Schwern <schwern@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoperl: detect new files in MakeMaker builds
Junio C Hamano [Fri, 27 Jul 2012 20:04:20 +0000 (20:04 +0000)]
perl: detect new files in MakeMaker builds

While Makefile.PL now finds .pm files on its own, it does not
detect new files after it generates perl/perl.mak.

[ew: commit message, minor tweaks]

ref: http://mid.gmane.org/7vlii51xz4.fsf@alter.siamese.dyndns.org

Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoThe Makefile.PL will now find .pm files itself.
Michael G. Schwern [Wed, 25 Jul 2012 03:21:11 +0000 (20:21 -0700)]
The Makefile.PL will now find .pm files itself.

It is no longer necessary to manually add new .pm files to the
Makefile.PL.  This makes it easier to add modules.

It is still necessary to add them to the Makefile, but that extra work
should be removed at a future date.

Signed-off-by: Michael G Schwern <schwern@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoDon't lose Error.pm if $@ gets clobbered.
Michael G. Schwern [Wed, 25 Jul 2012 03:21:10 +0000 (20:21 -0700)]
Don't lose Error.pm if $@ gets clobbered.

In older Perls, sometimes $@ can become unset between the eval and
checking $@.  Its safer to check the eval directly.

Signed-off-by: Michael G Schwern <schwern@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agoQuiet warning if Makefile.PL is run with -w and no --localedir
Michael G. Schwern [Wed, 25 Jul 2012 03:21:09 +0000 (20:21 -0700)]
Quiet warning if Makefile.PL is run with -w and no --localedir

Usually it isn't, but its nice if it can be run with warnings on.

Signed-off-by: Michael G Schwern <schwern@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
11 years agot7502: test early quit from commit with bad ident
Jeff King [Thu, 26 Jul 2012 20:32:50 +0000 (16:32 -0400)]
t7502: test early quit from commit with bad ident

In commit f20f387, "git commit" notices and dies much
earlier when we have a bogus commit identity. That commit
did not add a test because we cannot do so reliably (namely,
we can only trigger the behavior on a system where the
automatically generated identity is bogus). However, now
that we have a prerequisite check for this feature, we can
add a test that will at least run on systems that produce
such a bogus identity.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot7502: handle systems where auto-identity is broken
Jeff King [Thu, 26 Jul 2012 20:32:31 +0000 (16:32 -0400)]
t7502: handle systems where auto-identity is broken

Test t7502.21 checks whether we write the committer name
into COMMIT_EDITMSG when it has been automatically
determined. However, not all systems can produce valid
automatic identities.

Prior to f20f387 (commit: check committer identity more
strictly), this test worked even when we did not have a
valid automatic identity, since it did not run the strict
test until after we had generated the template. That commit
tightened the check to fail early (since we would fail
later, anyway), meaning that systems without a valid GECOS
name or hostname would fail the test.

We cannot just work around this, because it depends on
configuration outside the control of the test script.
Therefore we introduce a new test_prerequisite to run this
test only on systems where automatic ident works at all.

As a result, we can drop the confusing test_must_fail bit
from the test. The intent was that by giving "git commit"
invalid input (namely, nothing to commit), that it would
stop at a predictable point, whether we had a valid identity
or not, from which we could view the contents of
COMMIT_EDITMSG. Since that assumption no longer holds, and
we can only run the test when we have a valid identity,
there is no reason not to let commit run to completion. That
lets us be more robust to other unforeseen failures.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot7502: drop confusing test_might_fail call
Jeff King [Thu, 26 Jul 2012 20:31:15 +0000 (16:31 -0400)]
t7502: drop confusing test_might_fail call

In t7502.20, we run "git commit" and check that it warns us
that the author and committer identity are not the same
(this is always the case in the test environment, since we
set up the idents differently).

Instead of actually making a commit, we have a clean index,
so the "git commit" we run will fail. This is marked as
might_fail, which is not really correct; it will always fail
since there is nothing to commit.

However, the only reason not to do a complete commit would
be to see the intermediate state of the COMMIT_EDITMSG file
when the commit is not completed. We don't need to care
about this, though; even a complete commit will leave
COMMIT_EDITMSG for us to view.  By doing a real commit and
dropping the might_fail, we are more robust against other
unforeseen failures of "git commit" that might influence our
test result.

It might seem less robust to depend on the fact that "git
commit" leaves COMMIT_EDITMSG in place after a successful
commit. However, that brings this test in line with others
parts of the script, which make the same assumption.
Furthermore, if that ever does change, the right solution is
not to prevent commit from completing, but to set EDITOR to
a script that will record the contents we see. After all,
the point of these tests is to check what the user sees in
their EDITOR, so that would be the most direct test. For
now, though, we can continue to use the "shortcut" that
COMMIT_EDITMSG is left intact.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot7502: narrow checks for author/committer name in template
Jeff King [Thu, 26 Jul 2012 20:30:29 +0000 (16:30 -0400)]
t7502: narrow checks for author/committer name in template

t7502.20 and t7502.21 check that the author and committer
name are mentioned in the commit message template under
certain circumstances. However, they end up checking a much
larger and unnecessary portion of the template. Let's narrow
their checks to the specific lines.

While we're at it, let's give these tests more descriptive
names, so their purposes are more obvious.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot7502: properly quote GIT_EDITOR
Jeff King [Thu, 26 Jul 2012 20:28:00 +0000 (16:28 -0400)]
t7502: properly quote GIT_EDITOR

One of the tests tries to ensure that editor is not run due
to an early failure. However, it needs to quote the pathname
of the trash directory used in $GIT_EDITOR, since git will
pass it along to the shell. In other words, the test would
pass whether the code was correct or not, since the unquoted
editor specification would never run.

We never noticed the problem because the code is indeed
correct, so git-commit never even tried to run the editor.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot7502: clean up fake_editor tests
Jeff King [Thu, 26 Jul 2012 20:27:55 +0000 (16:27 -0400)]
t7502: clean up fake_editor tests

Using write_script saves us a few lines of code, and means
we consistently use $SHELL_PATH.

We can also drop the setting of the $pwd variable from
$(pwd). In the first instance, there is no reason to use it
(we can just use $(pwd) directly two lines later, since we
are interpolating the here-document). In the second
instance, it is totally pointless and probably just a
cut-and-paste from the first instance.

Finally, we can use a non-interpolating here document for
the final script, which saves some quoting.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/test-lib-source-build-options-early'
Junio C Hamano [Wed, 25 Jul 2012 22:47:08 +0000 (15:47 -0700)]
Merge branch 'jc/test-lib-source-build-options-early'

Reorders t/test-lib.sh so that we dot-source GIT-BUILD-OPTIONS that
records the shell and Perl the user told us to use with Git a lot
early, so that test-lib.sh script itself can use "$PERL_PATH" in
one of its early operations.

* jc/test-lib-source-build-options-early:
  test-lib: reorder and include GIT-BUILD-OPTIONS a lot earlier

11 years agoMerge branch 'mm/config-xdg'
Junio C Hamano [Wed, 25 Jul 2012 22:47:04 +0000 (15:47 -0700)]
Merge branch 'mm/config-xdg'

Finishing touches to the XDG support (new feature for 1.7.12) and
tests.

* mm/config-xdg:
  t1306: check that XDG_CONFIG_HOME works
  ignore: make sure we have an xdg path before using it
  attr: make sure we have an xdg path before using it
  test-lib.sh: unset XDG_CONFIG_HOME

11 years agoMerge branch 'cw/rebase-i-root'
Junio C Hamano [Wed, 25 Jul 2012 22:46:59 +0000 (15:46 -0700)]
Merge branch 'cw/rebase-i-root'

Finishing touches to the "rebase -i --root" (new feature for
1.7.12).

* cw/rebase-i-root:
  rebase -i: handle fixup of root commit correctly

11 years agoMerge branch 'mh/maint-revisions-doc'
Junio C Hamano [Wed, 25 Jul 2012 22:46:06 +0000 (15:46 -0700)]
Merge branch 'mh/maint-revisions-doc'

* mh/maint-revisions-doc:
  Enumerate revision range specifiers in the documentation
  Make <refname> documentation more consistent.

11 years agocheckout: don't confuse ref and object flags
Jeff King [Wed, 25 Jul 2012 21:57:30 +0000 (17:57 -0400)]
checkout: don't confuse ref and object flags

When we are leaving a detached HEAD, we do a revision traversal to
check whether we are orphaning any commits, marking the commit we're
leaving as the start of the traversal, and all existing refs as
uninteresting.

Prior to commit 468224e5, we did so by calling for_each_ref, and
feeding each resulting refname to setup_revisions.  Commit 468224e5
refactored this to simply mark the pending objects, saving an extra
lookup.

However, it confused the "flags" parameter to the each_ref_fn
clalback, which is about the flags we found while looking up the ref
with the object flag.  Because REF_ISSYMREF ("this ref is a symbolic
ref, e.g. refs/remotes/origin/HEAD") happens to be the same bit
pattern as SEEN ("we have picked this object up from the pending
list and moved it to revs.commits list"), we incorrectly reported
that a commit previously at the detached HEAD will become
unreachable if the only ref that can reach the commit happens to be
pointed at by a symbolic ref.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agogit-submodule: work with GIT_DIR/GIT_WORK_TREE
Daniel Graña [Sun, 22 Jul 2012 14:49:44 +0000 (11:49 -0300)]
git-submodule: work with GIT_DIR/GIT_WORK_TREE

The combination of GIT_DIR and GIT_WORK_TREE can be used to manage
files in one directory hierarchy while keeping the repository that
keeps track of them outside the directory hierarchy.  For example:

    git init --bare /path/to/there
    alias dotfiles="GIT_DIR=/path/to/there GIT_WORK_TREE=/path/to/here git"

    cd /path/to/here
    dotfiles add file
    dotfiles commit -a -m "add /path/to/here/file"
    ...

lets you manage files under /path/to/here/ in the repository located
at /path/to/there.

git-submodule however fails to add submodules, as it is confused by
GIT_DIR and GIT_WORK_TREE environment variables when it tries to
work in the submodule, like so:

    dotfiles submodule add http://path.to/submodule
    fatal: working tree '/path/to/here' already exists.

Simply unsetting the environment where the command works on the
submodule is sufficient to fix this, as it has set things up so
that GIT_DIR and GIT_WORK_TREE do not even have to point at the
repository and the working tree of the submodule.

Signed-off-by: Daniel Graña <dangra@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohelp.c::exclude_cmds(): plug a leak
Junio C Hamano [Wed, 25 Jul 2012 18:01:12 +0000 (11:01 -0700)]
help.c::exclude_cmds(): plug a leak

Command name removed from the list of commands via the exclusion
were overwritten and lost without being freed.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agohelp.c::uniq: plug a leak
Jeff King [Wed, 25 Jul 2012 16:16:19 +0000 (00:16 +0800)]
help.c::uniq: plug a leak

We observe that the j-1 element can serve the same purpose as the i-1
element that we use in the strcmp(); it is either:

  1. Exactly i-1, when the loop begins (and until we see a duplicate).

  2. The same pointer that was stored at i-1 (if it was not a duplicate,
     and we just copied it into place).

  3. A pointer to an equivalent string (i.e., we rejected i-1 _because_
     it was identical to j-1).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoEnumerate revision range specifiers in the documentation
Junio C Hamano [Tue, 24 Jul 2012 22:03:50 +0000 (15:03 -0700)]
Enumerate revision range specifiers in the documentation

It was a bit hard to learn how <rev>^@, <rev>^! and various other
forms of range specifiers are used, because they were discussed
mostly in the prose part of the documentation, unlike various forms
of extended SHA-1 expressions that are listed in an enumerated list.

Also add a few more examples showing use of <rev>, <rev>..<rev> and
<rev>^! forms, stolen from a patch by Max Horn.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUpdate draft release notes to 1.7.12
Junio C Hamano [Tue, 24 Jul 2012 21:08:43 +0000 (14:08 -0700)]
Update draft release notes to 1.7.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jc/mergetool-tool-help'
Junio C Hamano [Tue, 24 Jul 2012 21:05:26 +0000 (14:05 -0700)]
Merge branch 'jc/mergetool-tool-help'

"git mergetool" did not support --tool-help option to give the list
of supported backends, like "git difftool" does.

* jc/mergetool-tool-help:
  mergetool: support --tool-help option like difftool does

11 years agoMerge branch 'jk/maint-commit-document-editmsg'
Junio C Hamano [Tue, 24 Jul 2012 21:05:22 +0000 (14:05 -0700)]
Merge branch 'jk/maint-commit-document-editmsg'

Document $GIT_DIR/COMMIT_EDITMSG file.

* jk/maint-commit-document-editmsg:
  commit: document the temporary commit message file

11 years agoMerge branch 'jk/maint-commit-check-committer-early'
Junio C Hamano [Tue, 24 Jul 2012 21:05:18 +0000 (14:05 -0700)]
Merge branch 'jk/maint-commit-check-committer-early'

"git commit --amend" let the user edit the log message and then died
when the human-readable committer name was given insufficiently by
getpwent(3).

* jk/maint-commit-check-committer-early:
  commit: check committer identity more strictly

11 years agoMerge branch 'jk/maint-advise-vaddf'
Junio C Hamano [Tue, 24 Jul 2012 21:05:08 +0000 (14:05 -0700)]
Merge branch 'jk/maint-advise-vaddf'

The advise() function did not use varargs correctly to format
its message.

* jk/maint-advise-vaddf:
  advice: pass varargs to strbuf_vaddf, not strbuf_addf

11 years agot/lib-httpd: handle running under --valgrind
Jeff King [Tue, 24 Jul 2012 13:43:59 +0000 (09:43 -0400)]
t/lib-httpd: handle running under --valgrind

Running the http tests with valgrind does not work for two
reasons:

  1. Apache complains about following the symbolic link from
     git-http-backend to valgrind.sh.

  2. Apache does not pass through the GIT_VALGRIND variable
     to the backend CGI.

This patch fixes both problems. Unfortunately, there is a
slight hack we need to handle passing environment variables
through Apache. If we just tell it:

  PassEnv GIT_VALGRIND

then Apache will complain when GIT_VALGRIND is not set. If
we try:

  SetEnv GIT_VALGRIND ${GIT_VALGRIND}

then when GIT_VALGRIND is not set, it will pass through the
literal "${GIT_VALGRIND}". Instead, we now unconditionally
pass through GIT_VALGRIND from lib-httpd.sh into apache,
even if it is empty.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agorebase -i: handle fixup of root commit correctly
Chris Webb [Tue, 24 Jul 2012 12:17:03 +0000 (13:17 +0100)]
rebase -i: handle fixup of root commit correctly

There is a bug with git rebase -i --root when a fixup or squash line is
applied to the new root. We attempt to amend the commit onto which they
apply with git reset --soft HEAD^ followed by a normal commit. Unlike a
real commit --amend, this sequence will fail against a root commit as it
has no parent.

Fix rebase -i to use commit --amend for fixup and squash instead, and
add a test for the case of a fixup of the root commit.

Signed-off-by: Chris Webb <chris@arachsys.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agot1306: check that XDG_CONFIG_HOME works
Jeff King [Tue, 24 Jul 2012 12:27:10 +0000 (08:27 -0400)]
t1306: check that XDG_CONFIG_HOME works

This should override $HOME/.config, but we never actually tested it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoignore: make sure we have an xdg path before using it
Matthieu Moy [Tue, 24 Jul 2012 12:26:51 +0000 (14:26 +0200)]
ignore: make sure we have an xdg path before using it

Commit e3ebc35 (config: fix several access(NULL) calls, 2012-07-12) was
fixing access(NULL) calls when trying to access $HOME/.config/git/config,
but missed the ones when trying to access $HOME/.config/git/ignore. Fix
and test this.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoattr: make sure we have an xdg path before using it
Jeff King [Tue, 24 Jul 2012 11:53:57 +0000 (07:53 -0400)]
attr: make sure we have an xdg path before using it

If we don't have a core.attributesfile configured, we fall
back to checking XDG config, which is usually
$HOME/.config/git/attributes.

However, if $HOME is unset, then home_config_paths will return
NULL, and we end up calling fopen(NULL).

Depending on your system, this may or may not cause the
accompanying test to fail (e.g., on Linux and glibc, the
address will go straight to open, which will return EFAULT).
However, valgrind will reliably notice the error.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agotest-lib.sh: unset XDG_CONFIG_HOME
Jeff King [Tue, 24 Jul 2012 11:53:05 +0000 (07:53 -0400)]
test-lib.sh: unset XDG_CONFIG_HOME

Now that git respects XDG_CONFIG_HOME for some lookups, we
must be sure to cleanse the test environment. Otherwise, the
user's XDG_CONFIG_HOME could influence the test results.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoGit 1.7.12-rc0 v1.7.12-rc0
Junio C Hamano [Tue, 24 Jul 2012 04:02:06 +0000 (21:02 -0700)]
Git 1.7.12-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jn/block-sha1'
Junio C Hamano [Tue, 24 Jul 2012 03:56:46 +0000 (20:56 -0700)]
Merge branch 'jn/block-sha1'

The code to load a word one-byte-at-a-time was optimized into a
word-wide load instruction even when the pointer was not aligned,
which caused issues on architectures that do not like unaligned
access.

* jn/block-sha1:
  Makefile: BLK_SHA1 does not require fast htonl() and unaligned loads
  block-sha1: put expanded macro parameters in parentheses
  block-sha1: avoid pointer conversion that violates alignment constraints

11 years agoMerge branch 'jn/make-assembly-in-right-directory'
Junio C Hamano [Tue, 24 Jul 2012 03:56:39 +0000 (20:56 -0700)]
Merge branch 'jn/make-assembly-in-right-directory'

* jn/make-assembly-in-right-directory:
  Makefile: fix location of listing produced by "make subdir/foo.s"

11 years agoMerge branch 'th/difftool-diffall'
Junio C Hamano [Tue, 24 Jul 2012 03:56:17 +0000 (20:56 -0700)]
Merge branch 'th/difftool-diffall'

Finishing touches to difftool --dirdiff.

* th/difftool-diffall:
  difftool: only copy back files modified during directory diff

11 years agoMerge branch 'sl/autoconf'
Junio C Hamano [Tue, 24 Jul 2012 03:56:13 +0000 (20:56 -0700)]
Merge branch 'sl/autoconf'

* sl/autoconf:
  build: reconfigure automatically if configure.ac changes
  build: "make clean" should not remove configure-generated files
  autoconf: use AC_CONFIG_COMMANDS instead of ad-hoc 'config.mak.append'
  autoconf: remove few redundant semicolons
  autoconf: remove some redundant shell indirections
  autoconf: GIT_CONF_APPEND_LINE -> GIT_CONF_SUBST
  autoconf: GIT_CONF_APPEND_LINE: change signature

11 years agoMerge branch 'jv/maint-no-ext-diff'
Junio C Hamano [Tue, 24 Jul 2012 03:56:03 +0000 (20:56 -0700)]
Merge branch 'jv/maint-no-ext-diff'

"git diff --no-ext-diff" did not output anything for a typechange
filepair when GIT_EXTERNAL_DIFF is in effect.

* jv/maint-no-ext-diff:
  diff: test precedence of external diff drivers
  diff: correctly disable external_diff with --no-ext-diff

11 years agoMerge branch 'kk/maint-commit-tree'
Junio C Hamano [Tue, 24 Jul 2012 03:55:53 +0000 (20:55 -0700)]
Merge branch 'kk/maint-commit-tree'

* kk/maint-commit-tree:
  Revert "git-commit-tree(1): update synopsis"
  commit-tree: resurrect command line parsing updates

11 years agoMerge branch 'jk/mediawiki-credential'
Junio C Hamano [Tue, 24 Jul 2012 03:55:33 +0000 (20:55 -0700)]
Merge branch 'jk/mediawiki-credential'

* jk/mediawiki-credential:
  mw-to-git: use git-credential's URL parser
  credential: convert "url" attribute into its parsed subparts
  mw-to-git: check blank credential attributes via length
  docs/credential: minor clarity fixups

11 years agoMerge branch 'mm/mediawiki-usability'
Junio C Hamano [Tue, 24 Jul 2012 03:55:25 +0000 (20:55 -0700)]
Merge branch 'mm/mediawiki-usability'

* mm/mediawiki-usability:
  git-remote-mediawiki: allow page names with a ':'
  git-remote-mediawiki: fix incorrect test usage in test
  git-remote-mediawiki: properly deal with invalid remote revisions
  git-remote-mediawiki: show progress information when getting last remote revision
  git-remote-mediawiki: show progress information when listing pages
  git-remote-mediawiki: use --force when adding notes
  git-remote-mediawiki: get rid of O(N^2) loop
  git-remote-mediawiki: make mediafiles export optional
  git-remote-mediawiki: actually send empty comment when they're empty
  git-remote-mediawiki: don't split namespaces with spaces

11 years agoMerge branch 'sn/doc-typofix'
Junio C Hamano [Tue, 24 Jul 2012 03:55:21 +0000 (20:55 -0700)]
Merge branch 'sn/doc-typofix'

* sn/doc-typofix:
  doc: A few minor copy edits.

11 years agoMerge branch 'tg/ce-namelen-field'
Junio C Hamano [Tue, 24 Jul 2012 03:55:16 +0000 (20:55 -0700)]
Merge branch 'tg/ce-namelen-field'

Split lower bits of ce_flags field and creates a new ce_namelen
field in the in-core index structure.

* tg/ce-namelen-field:
  Strip namelen out of ce_flags into a ce_namelen field

11 years agoMerge branch 'nk/maint-gitweb-log-by-lines'
Junio C Hamano [Tue, 24 Jul 2012 03:55:07 +0000 (20:55 -0700)]
Merge branch 'nk/maint-gitweb-log-by-lines'

Teach gitweb to pay attention to various forms of credits that are
similar to "Signed-off-by:" lines.

* nk/maint-gitweb-log-by-lines:
  gitweb: Add support to Link: tag
  gitweb: Handle other types of tag in git_print_log
  gitweb: Cleanup git_print_log()

11 years agocommit: document the temporary commit message file
Jeff King [Mon, 23 Jul 2012 21:13:12 +0000 (17:13 -0400)]
commit: document the temporary commit message file

We do not document COMMIT_EDITMSG at all, but users may want
to know about it for two reasons:

  1. They may want to tell their editor to configure itself
     for formatting a commit message.

  2. If a commit is aborted by an error, the user may want
     to recover the commit message they typed.

Let's put a note in git-commit(1).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agomergetool: support --tool-help option like difftool does
Junio C Hamano [Mon, 23 Jul 2012 21:16:12 +0000 (14:16 -0700)]
mergetool: support --tool-help option like difftool does

This way we do not have to risk the list of tools going out of sync
between the implementation and the documentation.

In the same spirit as bf73fc2 (difftool: print list of valid tools
with '--tool-help', 2012-03-29), trim the list of merge backends in
the documentation.  We do not want to have a complete list of valid
tools; we only want a list to help people guess what kind of things
the tools do to be specified there, and refer them to --tool-help
for a complete list.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agocommit: check committer identity more strictly
Jeff King [Mon, 23 Jul 2012 18:50:35 +0000 (14:50 -0400)]
commit: check committer identity more strictly

The identity of the committer will ultimately be pulled from
the ident code by commit_tree(). However, we make an attempt
to check the author and committer identity early, before the
user has done any manual work like inputting a commit
message. That lets us abort without them having to worry
about salvaging the work from .git/COMMIT_EDITMSG.

The early check for committer ident does not use the
IDENT_STRICT flag, meaning that it would not find an empty
name field. The motivation was presumably because we did not
want to be too restrictive, as later calls might be more lax
(for example, when we create the reflog entry, we do not
care too much about a real name). However, because
commit_tree will always get a strict identity to put in the
commit object itself, there is no point in being lax only to
die later (and in fact it is harmful, because the user will
have wasted time typing their commit message).

Incidentally, this bug was masked prior to 060d4bb, as the
initial loose call would taint the later strict call. So the
commit would succeed (albeit with a bogus committer line in
the commit object), and nobody noticed that our early check
did not match the later one.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoadvice: pass varargs to strbuf_vaddf, not strbuf_addf
Jeff King [Mon, 23 Jul 2012 18:48:57 +0000 (14:48 -0400)]
advice: pass varargs to strbuf_vaddf, not strbuf_addf

The advise() function takes a variable number of arguments
and converts them into a va_list object to pass to strbuf
for handling. However, we accidentally called strbuf_addf
(that takes a variable number of arguments) instead of
strbuf_vaddf (that takes a va_list).

This bug dates back to v1.7.8.1-1-g23cb5bf, but we never
noticed because none of the current callers passes a string
with a format specifier in it. And the compiler did not
notice because the format string is not available at
compile time.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: BLK_SHA1 does not require fast htonl() and unaligned loads
Jonathan Nieder [Mon, 23 Jul 2012 06:29:14 +0000 (01:29 -0500)]
Makefile: BLK_SHA1 does not require fast htonl() and unaligned loads

block-sha1/ is fast on most known platforms.  Clarify the Makefile to
be less misleading about that.

Early versions of block-sha1/ explicitly relied on fast htonl() and
fast 32-bit loads with arbitrary alignment.  Now it uses those on some
arches but the default behavior is byte-at-a-time access for the sake
of arches like ARM, Alpha, and their kin and it is still pretty fast
on these arches (fast enough to supersede the mozilla SHA1
implementation and the hand-written ARM assembler implementation that
were bundled before).

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMakefile: fix location of listing produced by "make subdir/foo.s"
Jonathan Nieder [Sun, 22 Jul 2012 23:47:26 +0000 (18:47 -0500)]
Makefile: fix location of listing produced by "make subdir/foo.s"

When I invoke "make block-sha1/sha1.s", 'make' runs $(CC) -S without
specifying where it should put its output and the output ends up in
./sha1.s.  Confusing.

Add an -o option to the .s rule to fix this.  We were already doing
that for most compiler invocations but had forgotten it for the
assembler listings.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: put expanded macro parameters in parentheses
Jonathan Nieder [Sun, 22 Jul 2012 23:40:54 +0000 (18:40 -0500)]
block-sha1: put expanded macro parameters in parentheses

't' is currently always a numeric constant, but it can't hurt to
prepare for the day that it becomes useful for a caller to pass in a
more complex expression.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoblock-sha1: avoid pointer conversion that violates alignment constraints
Jonathan Nieder [Sun, 22 Jul 2012 23:39:54 +0000 (18:39 -0500)]
block-sha1: avoid pointer conversion that violates alignment constraints

With 660231aa (block-sha1: support for architectures with memory
alignment restrictions, 2009-08-12), blk_SHA1_Update was modified to
access 32-bit chunks of memory one byte at a time on arches that
prefer that:

#define get_be32(p)    ( \
(*((unsigned char *)(p) + 0) << 24) | \
(*((unsigned char *)(p) + 1) << 16) | \
(*((unsigned char *)(p) + 2) <<  8) | \
(*((unsigned char *)(p) + 3) <<  0) )

The code previously accessed these values by just using htonl(*p).

Unfortunately, Michael noticed on an Alpha machine that git was using
plain 32-bit reads anyway.  As soon as we convert a pointer to int *,
the compiler can assume that the object pointed to is correctly
aligned as an int (C99 section 6.3.2.3 "pointer conversions"
paragraph 7), and gcc takes full advantage by using a single 32-bit
load, resulting in a whole bunch of unaligned access traps.

So we need to obey the alignment constraints even when only dealing
with pointers instead of actual values.  Do so by changing the type
of 'data' to void *.  This patch renames 'data' to 'block' at the same
time to make sure all references are updated to reflect the new type.

Reported-tested-and-explained-by: Michael Cree <mcree@orcon.net.nz>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoUpdate draft release notes to 1.7.12
Junio C Hamano [Sun, 22 Jul 2012 20:20:24 +0000 (13:20 -0700)]
Update draft release notes to 1.7.12

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoSync with 1.7.11.3
Junio C Hamano [Sun, 22 Jul 2012 20:08:22 +0000 (13:08 -0700)]
Sync with 1.7.11.3

11 years agoGit 1.7.11.3 v1.7.11.3
Junio C Hamano [Sun, 22 Jul 2012 20:07:40 +0000 (13:07 -0700)]
Git 1.7.11.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
11 years agoMerge branch 'jk/push-delete-ref-error-message' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:04:25 +0000 (13:04 -0700)]
Merge branch 'jk/push-delete-ref-error-message' into maint

The error message from "git push $there :bogo" (and its equivalent
"git push $there --delete bogo") mentioned that we tried and failed
to guess what ref is being deleted based on the LHS of the refspec,
which we don't.

* jk/push-delete-ref-error-message:
  push: don't guess at qualifying remote refs on deletion

11 years agoMerge branch 'ar/clone-honor-umask-at-top' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:04:05 +0000 (13:04 -0700)]
Merge branch 'ar/clone-honor-umask-at-top' into maint

A handful of files and directories we create had tighter than
necessary permission bits when the user wanted to have group
writability (e.g. by setting "umask 002").

* ar/clone-honor-umask-at-top:
  add: create ADD_EDIT.patch with mode 0666
  rerere: make rr-cache fanout directory honor umask
  Restore umasks influence on the permissions of work tree created by clone

11 years agoMerge branch 'cw/amend-commit-without-message' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:03:52 +0000 (13:03 -0700)]
Merge branch 'cw/amend-commit-without-message' into maint

"commit --amend" used to refuse amending a commit with an empty log
message, with or without "--allow-empty-message".

* cw/amend-commit-without-message:
  Allow edit of empty message with commit --amend

11 years agoMerge branch 'jk/maint-commit-amend-only-no-paths' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:03:29 +0000 (13:03 -0700)]
Merge branch 'jk/maint-commit-amend-only-no-paths' into maint

"git commit --amend --only --" was meant to allow "Clever" people to
rewrite the commit message without making any change even when they
have already changes for the next commit added to their index, but
it never worked as advertised since it was introduced in 1.3.0 era.

* jk/maint-commit-amend-only-no-paths:
  commit: fix "--amend --only" with no pathspec

11 years agoMerge branch 'tg/maint-cache-name-compare' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:01:56 +0000 (13:01 -0700)]
Merge branch 'tg/maint-cache-name-compare' into maint

Even though the index can record pathnames longer than 1<<12 bytes,
in some places we were not comparing them in full, potentially
replacing index entries instead of adding.

* tg/maint-cache-name-compare:
  cache_name_compare(): do not truncate while comparing paths

11 years agoMerge branch 'tr/maint-show-walk' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:01:40 +0000 (13:01 -0700)]
Merge branch 'tr/maint-show-walk' into maint

"git show"'s auto-walking behaviour was an unreliable and
unpredictable hack; it now behaves just like "git log" does when it
walks.

* tr/maint-show-walk:
  show: fix "range implies walking"
  Demonstrate git-show is broken with ranges

11 years agoMerge branch 'jc/refactor-diff-stdin' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:01:22 +0000 (13:01 -0700)]
Merge branch 'jc/refactor-diff-stdin' into maint

"git diff", "git status" and anything that internally uses the
comparison machinery was utterly broken when the difference
involved a file with "-" as its name.  This was due to the way "git
diff --no-index" was incorrectly bolted on to the system, making
any comparison that involves a file "-" at the root level
incorrectly read from the standard input.

* jc/refactor-diff-stdin:
  diff-index.c: "git diff" has no need to read blob from the standard input
  diff-index.c: unify handling of command line paths
  diff-index.c: do not pretend paths are pathspecs

11 years agoMerge branch 'mz/empty-rebase-test' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:00:55 +0000 (13:00 -0700)]
Merge branch 'mz/empty-rebase-test' into maint

We did not have test to make sure "git rebase" without extra options
filters out an empty commit in the original history.

* mz/empty-rebase-test:
  add test case for rebase of empty commit

11 years agoMerge branch 'js/fast-export-paths-with-spaces' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:00:45 +0000 (13:00 -0700)]
Merge branch 'js/fast-export-paths-with-spaces' into maint

"git fast-export" produced an input stream for fast-import without
properly quoting pathnames when they contain SPs in them.

* js/fast-export-paths-with-spaces:
  fast-export: quote paths with spaces

11 years agoMerge branch 'cw/no-detaching-an-unborn' into maint
Junio C Hamano [Sun, 22 Jul 2012 20:00:31 +0000 (13:00 -0700)]
Merge branch 'cw/no-detaching-an-unborn' into maint

"git checkout --detach", when you are still on an unborn branch,
should be forbidden, but it wasn't.

* cw/no-detaching-an-unborn:
  git-checkout: disallow --detach on unborn branch