Code

git.git
12 years agoMerge branch 'da/maint-mergetool-twoway'
Junio C Hamano [Wed, 1 Feb 2012 06:01:17 +0000 (22:01 -0800)]
Merge branch 'da/maint-mergetool-twoway'

* da/maint-mergetool-twoway:
  mergetool: Provide an empty file when needed

12 years agoMerge branch 'va/git-p4-branch'
Junio C Hamano [Wed, 1 Feb 2012 06:01:16 +0000 (22:01 -0800)]
Merge branch 'va/git-p4-branch'

* va/git-p4-branch:
  t9801: do not overuse test_must_fail
  git-p4: Change p4 command invocation
  git-p4: Add test case for complex branch import
  git-p4: Search for parent commit on branch creation

12 years agoMerge branch 'jl/submodule-re-add'
Junio C Hamano [Wed, 1 Feb 2012 06:01:16 +0000 (22:01 -0800)]
Merge branch 'jl/submodule-re-add'

* jl/submodule-re-add:
  submodule add: fix breakage when re-adding a deep submodule

12 years agoMerge branch 'tr/grep-l-with-decoration'
Junio C Hamano [Wed, 1 Feb 2012 06:01:15 +0000 (22:01 -0800)]
Merge branch 'tr/grep-l-with-decoration'

* tr/grep-l-with-decoration:
  grep: fix -l/-L interaction with decoration lines

12 years agoMerge branch 'ks/sort-wildcard-in-makefile'
Junio C Hamano [Wed, 1 Feb 2012 06:01:15 +0000 (22:01 -0800)]
Merge branch 'ks/sort-wildcard-in-makefile'

* ks/sort-wildcard-in-makefile:
  t/Makefile: Use $(sort ...) explicitly where needed

12 years agoMerge branch 'ld/git-p4-branches-and-labels'
Junio C Hamano [Wed, 1 Feb 2012 06:01:14 +0000 (22:01 -0800)]
Merge branch 'ld/git-p4-branches-and-labels'

* ld/git-p4-branches-and-labels:
  git-p4: label import fails with multiple labels at the same changelist
  git-p4: add test for p4 labels
  git-p4: importing labels should cope with missing owner
  git-p4: cope with labels with empty descriptions
  git-p4: handle p4 branches and labels containing shell chars

12 years agoMerge branch 'rr/sequencer'
Junio C Hamano [Wed, 1 Feb 2012 06:01:14 +0000 (22:01 -0800)]
Merge branch 'rr/sequencer'

* rr/sequencer:
  sequencer: factor code out of revert builtin
  revert: prepare to move replay_action to header

Conflicts:
builtin/revert.c

12 years agoMerge branch 'jc/advise-i18n'
Junio C Hamano [Wed, 1 Feb 2012 06:01:14 +0000 (22:01 -0800)]
Merge branch 'jc/advise-i18n'

* jc/advise-i18n:
  i18n of multi-line advice messages

12 years agocompletion: --edit and --no-edit for git-merge
Adrian Weimann [Mon, 30 Jan 2012 19:29:33 +0000 (20:29 +0100)]
completion: --edit and --no-edit for git-merge

Signed-off-by: Adrian Weimann <adrian.weimann@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoKick off the post 1.7.9 cycle
Junio C Hamano [Sun, 29 Jan 2012 21:46:18 +0000 (13:46 -0800)]
Kick off the post 1.7.9 cycle

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'nd/index-pack-no-recurse'
Junio C Hamano [Sun, 29 Jan 2012 21:18:56 +0000 (13:18 -0800)]
Merge branch 'nd/index-pack-no-recurse'

* nd/index-pack-no-recurse:
  index-pack: eliminate unlimited recursion in get_base_data()
  index-pack: eliminate recursion in find_unresolved_deltas
  Eliminate recursion in setting/clearing marks in commit list

12 years agoMerge branch 'rs/diff-postimage-in-context'
Junio C Hamano [Sun, 29 Jan 2012 21:18:55 +0000 (13:18 -0800)]
Merge branch 'rs/diff-postimage-in-context'

* rs/diff-postimage-in-context:
  xdiff: print post-image for common records instead of pre-image

12 years agoMerge branch 'jk/parse-object-cached'
Junio C Hamano [Sun, 29 Jan 2012 21:18:55 +0000 (13:18 -0800)]
Merge branch 'jk/parse-object-cached'

* jk/parse-object-cached:
  upload-pack: avoid parsing tag destinations
  upload-pack: avoid parsing objects during ref advertisement
  parse_object: try internal cache before reading object db

12 years agoMerge branch 'sp/smart-http-failure-to-push'
Junio C Hamano [Sun, 29 Jan 2012 21:18:54 +0000 (13:18 -0800)]
Merge branch 'sp/smart-http-failure-to-push'

* sp/smart-http-failure-to-push:
  remote-curl: Fix push status report when all branches fail

12 years agoMerge branch 'jc/maint-log-first-parent-pathspec'
Junio C Hamano [Sun, 29 Jan 2012 21:18:54 +0000 (13:18 -0800)]
Merge branch 'jc/maint-log-first-parent-pathspec'

* jc/maint-log-first-parent-pathspec:
  Making pathspec limited log play nicer with --first-parent

12 years agoMerge branch 'mh/ref-clone-without-extra-refs'
Junio C Hamano [Sun, 29 Jan 2012 21:18:53 +0000 (13:18 -0800)]
Merge branch 'mh/ref-clone-without-extra-refs'

* mh/ref-clone-without-extra-refs:
  write_remote_refs(): create packed (rather than extra) refs
  add_packed_ref(): new function in the refs API.
  ref_array: keep track of whether references are sorted
  pack_refs(): remove redundant check

12 years agoMerge branch 'jl/test-pause'
Junio C Hamano [Sun, 29 Jan 2012 21:18:53 +0000 (13:18 -0800)]
Merge branch 'jl/test-pause'

* jl/test-pause:
  test-lib: add the test_pause convenience function

12 years agoMerge branch 'tr/maint-mailinfo'
Junio C Hamano [Sun, 29 Jan 2012 21:18:53 +0000 (13:18 -0800)]
Merge branch 'tr/maint-mailinfo'

* tr/maint-mailinfo:
  mailinfo: with -b, keep space after [foo]
  am: learn passing -b to mailinfo

Conflicts:
git-am.sh

12 years agoMerge branch 'pw/p4-view-updates'
Junio C Hamano [Sun, 29 Jan 2012 21:18:52 +0000 (13:18 -0800)]
Merge branch 'pw/p4-view-updates'

* pw/p4-view-updates:
  git-p4: add tests demonstrating spec overlay ambiguities
  git-p4: adjust test to adhere to stricter useClientSpec
  git-p4: clarify comment
  git-p4: fix verbose comment typo
  git-p4: only a single ... wildcard is supported

12 years agoMerge branch 'nd/maint-refname-in-hierarchy-check'
Junio C Hamano [Sun, 29 Jan 2012 21:18:51 +0000 (13:18 -0800)]
Merge branch 'nd/maint-refname-in-hierarchy-check'

* nd/maint-refname-in-hierarchy-check:
  Fix incorrect ref namespace check

12 years agoMerge branch 'jn/gitweb-unspecified-action'
Junio C Hamano [Sun, 29 Jan 2012 21:18:50 +0000 (13:18 -0800)]
Merge branch 'jn/gitweb-unspecified-action'

* jn/gitweb-unspecified-action:
  gitweb: Fix actionless dispatch for non-existent objects

12 years agoMerge branch 'cb/push-quiet'
Junio C Hamano [Sun, 29 Jan 2012 21:18:50 +0000 (13:18 -0800)]
Merge branch 'cb/push-quiet'

* cb/push-quiet:
  t5541: avoid TAP test miscounting
  fix push --quiet: add 'quiet' capability to receive-pack
  server_supports(): parse feature list more carefully

12 years agoMerge branch 'nd/clone-single-branch'
Junio C Hamano [Sun, 29 Jan 2012 21:18:50 +0000 (13:18 -0800)]
Merge branch 'nd/clone-single-branch'

* nd/clone-single-branch:
  clone: add --single-branch to fetch only one branch

12 years agoMerge branch 'cb/git-daemon-tests'
Junio C Hamano [Sun, 29 Jan 2012 21:18:50 +0000 (13:18 -0800)]
Merge branch 'cb/git-daemon-tests'

* cb/git-daemon-tests:
  git-daemon tests: wait until daemon is ready
  git-daemon: produce output when ready
  git-daemon: add tests

12 years agoMerge branch 'cb/maint-kill-subprocess-upon-signal'
Junio C Hamano [Sun, 29 Jan 2012 21:18:50 +0000 (13:18 -0800)]
Merge branch 'cb/maint-kill-subprocess-upon-signal'

* cb/maint-kill-subprocess-upon-signal:
  dashed externals: kill children on exit
  run-command: optionally kill children on exit

12 years agoGit 1.7.9 v1.7.9
Junio C Hamano [Fri, 27 Jan 2012 19:31:02 +0000 (11:31 -0800)]
Git 1.7.9

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoINSTALL: warn about recent Fedora breakage
Junio C Hamano [Fri, 27 Jan 2012 05:48:33 +0000 (21:48 -0800)]
INSTALL: warn about recent Fedora breakage

Recent releases of Redhat/Fedora are reported to ship Perl binary package
with some core modules stripped away (see http://lwn.net/Articles/477234/)
against the upstream Perl5 people's wishes. The Time::HiRes module used by
gitweb one of them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-completion: workaround zsh COMPREPLY bug
Felipe Contreras [Wed, 25 Jan 2012 01:37:02 +0000 (03:37 +0200)]
git-completion: workaround zsh COMPREPLY bug

zsh adds a backslash (foo\ ) for each item in the COMPREPLY array if IFS
doesn't contain spaces. This issue has been reported[1], but there is no
solution yet.

This wasn't a problem due to another bug[2], which was fixed in zsh
version 4.3.12. After this change, 'git checkout ma<tab>' would resolve
to 'git checkout master\ '.

Aditionally, the introduction of __gitcomp_nl in commit a31e626
(completion: optimize refs completion) in git also made the problem
apparent, as Matthieu Moy reported.

The simplest and most generic solution is to hide all the changes we do
to IFS, so that "foo \nbar " is recognized by zsh as "foo bar". This
works on versions of git before and after the introduction of
__gitcomp_nl (a31e626), and versions of zsh before and after 4.3.12.

Once zsh is fixed, we should conditionally disable this workaround to
have the same benefits as bash users.

[1] http://www.zsh.org/mla/workers/2012/msg00053.html
[2] http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=commitdiff;h=2e25dfb8fd38dbef0a306282ffab1d343ce3ad8d

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot9801: do not overuse test_must_fail
Junio C Hamano [Thu, 26 Jan 2012 19:40:09 +0000 (11:40 -0800)]
t9801: do not overuse test_must_fail

test_must_fail is to make sure a program we can potentially break during
the course of updating git itself exits with a non-zero status in a clean
and controlled way.

When we expect a non-zero exit status from the commands we use from the
underlying platform in tests, e.g. making sure a string "error: " does not
appear in the output by running "grep 'error: '", just use "! grep" for
readability. It is not like we will try to update Git and suddenly 'grep'
we use from the system starts segfaulting.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: Change p4 command invocation
Pete Wyckoff [Wed, 25 Jan 2012 23:48:24 +0000 (23:48 +0000)]
git-p4: Change p4 command invocation

Change p4 command invocation to avoid going through the shell. This
allows names with spaces and wildcards to work.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: Add test case for complex branch import
Vitor Antunes [Wed, 25 Jan 2012 23:48:23 +0000 (23:48 +0000)]
git-p4: Add test case for complex branch import

Check if branches created from old changelists are correctly imported.
Also included some updates to simple branch test so that both are
coherent in respect to each other.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: Search for parent commit on branch creation
Vitor Antunes [Wed, 25 Jan 2012 23:48:22 +0000 (23:48 +0000)]
git-p4: Search for parent commit on branch creation

To find out which is its parent the commit of the new branch is compared
sequentially to each blob of the parent branch from the newest to the
oldest. The first blob which results in a zero diff is considered the
parent commit. If none is found, then the commit is applied to the top
of the parent branch.

A fast-import "checkpoint" call is required because diff-tree is only
able to work with blobs on disk. But most of these commits will not be
part of the final imported tree, making fast-import fail. To avoid this,
the temporary branches are tracked and then removed at the end of the
import process.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodocs: minor grammar fixes for v1.7.9 release notes
Jeff King [Wed, 25 Jan 2012 22:20:03 +0000 (17:20 -0500)]
docs: minor grammar fixes for v1.7.9 release notes

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosubmodule add: fix breakage when re-adding a deep submodule
Jens Lehmann [Tue, 24 Jan 2012 21:49:56 +0000 (22:49 +0100)]
submodule add: fix breakage when re-adding a deep submodule

Since recently a submodule with name <name> has its git directory in the
.git/modules/<name> directory of the superproject while the work tree
contains a gitfile pointing there.

When the same submodule is added on a branch where it wasn't present so
far (it is not found in the .gitmodules file), the name is not initialized
from the path as it should. This leads to a wrong path entered in the
gitfile when the .git/modules/<name> directory is found, as this happily
uses the - now empty - name. It then always points only a single directory
up, even if we have a path deeper in the directory hierarchy.

Fix that by initializing the name of the submodule early in module_clone()
if module_name() returned an empty name and add a test to catch that bug.

Reported-by: Jehan Bing <jehan@orb.com>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomergetool: Provide an empty file when needed
David Aguilar [Fri, 20 Jan 2012 07:47:35 +0000 (23:47 -0800)]
mergetool: Provide an empty file when needed

Some merge tools cannot cope when $LOCAL, $BASE, or $REMOTE are missing.
$BASE can be missing when two branches independently add the same
filename.

Provide an empty file to make these tools happy.

When a delete/modify conflict occurs, $LOCAL and $REMOTE can also be
missing. We have special case code to handle such case so this change
may not affect that codepath, but try to be consistent and create an
empty file for them anyway.

Reported-by: Jason Wenger <jcwenger@gmail.com>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogrep: fix -l/-L interaction with decoration lines
Albert Yale [Mon, 23 Jan 2012 17:52:44 +0000 (18:52 +0100)]
grep: fix -l/-L interaction with decoration lines

In threaded mode, git-grep emits file breaks (enabled with context, -W
and --break) into the accumulation buffers even if they are not
required.  The output collection thread then uses skip_first_line to
skip the first such line in the output, which would otherwise be at
the very top.

This is wrong when the user also specified -l/-L/-c, in which case
every line is relevant.  While arguably giving these options together
doesn't make any sense, git-grep has always quietly accepted it.  So
do not skip anything in these cases.

Signed-off-by: Albert Yale <surfingalbert@gmail.com>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoFix typo in 1.7.9 release notes
Michael Haggerty [Mon, 23 Jan 2012 12:09:58 +0000 (13:09 +0100)]
Fix typo in 1.7.9 release notes

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot/Makefile: Use $(sort ...) explicitly where needed
Kirill Smelkov [Sat, 3 Sep 2011 20:41:21 +0000 (00:41 +0400)]
t/Makefile: Use $(sort ...) explicitly where needed

Starting from GNU Make 3.82 $(wildcard ...) no longer sorts the result
(from NEWS):

    * WARNING: Backward-incompatibility!
      Wildcards were not documented as returning sorted values, but the results
      have been sorted up until this release..  If your makefiles require sorted
      results from wildcard expansions, use the $(sort ...)  function to request
      it explicitly.

    http://repo.or.cz/w/make.git/commitdiff/2a59dc32aaf0681dec569f32a9d7ab88a379d34f

I usually watch test progress visually, and if tests are sorted, even
with make -j4 they go more or less incrementally by their t number. On
the other side, without sorting, tests are executed in seemingly random
order even for -j1. Let's please maintain sane tests order for perceived
prettyness.

Another note is that in GNU Make sort also works as uniq, so after sort
being removed, we might expect e.g. $(wildcard *.sh a.*) to produce
duplicates for e.g. "a.sh". From this point of view, adding sort could
be seen as hardening t/Makefile from accidentally introduced dups.

It turned out that prevous releases of GNU Make did not perform full
sort in $(wildcard), only sorting results for each pattern, that's why
explicit sort-as-uniq is relevant even for older makes.

Signed-off-by: Kirill Smelkov <kirr@navytux.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: label import fails with multiple labels at the same changelist
Luke Diamand [Thu, 19 Jan 2012 09:52:29 +0000 (09:52 +0000)]
git-p4: label import fails with multiple labels at the same changelist

git-p4 has an array of changelists with one label per changelist.
But you can have multiple labels on a single changelist and so this
code fails.

Add a test case demonstrating the problem.

Signed-off-by: Luke Diamand <luke@diamand.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: add test for p4 labels
Luke Diamand [Thu, 19 Jan 2012 09:52:28 +0000 (09:52 +0000)]
git-p4: add test for p4 labels

Add basic test of p4 label import. Checks label import and
import with shell metachars; labels with different length
descriptions.

Signed-off-by: Luke Diamand <luke@diamand.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: importing labels should cope with missing owner
Luke Diamand [Thu, 19 Jan 2012 09:52:27 +0000 (09:52 +0000)]
git-p4: importing labels should cope with missing owner

In p4, the Owner field is optional. If it is missing,
construct something sensible rather than crashing.

Signed-off-by: Luke Diamand <luke@diamand.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: cope with labels with empty descriptions
Luke Diamand [Thu, 19 Jan 2012 09:52:26 +0000 (09:52 +0000)]
git-p4: cope with labels with empty descriptions

Use an explicit length for the data in a label, rather
than EOT, so that labels with empty descriptions are
passed through correctly.

Signed-off-by: Luke Diamand <luke@diamand.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: handle p4 branches and labels containing shell chars
Luke Diamand [Thu, 19 Jan 2012 09:52:25 +0000 (09:52 +0000)]
git-p4: handle p4 branches and labels containing shell chars

Don't use shell expansion when detecting branches, as it will
fail if the branch name contains a shell metachar. Similarly
for labels.

Add additional test for branches with shell metachars.

Signed-off-by: Luke Diamand <luke@diamand.org>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoremote-curl: Fix push status report when all branches fail
Shawn O. Pearce [Fri, 20 Jan 2012 03:12:09 +0000 (19:12 -0800)]
remote-curl: Fix push status report when all branches fail

The protocol between transport-helper.c and remote-curl requires
remote-curl to always print a blank line after the push command
has run. If the blank line is ommitted, transport-helper kills its
container process (the git push the user started) with exit(128)
and no message indicating a problem, assuming the helper already
printed reasonable error text to the console.

However if the remote rejects all branches with "ng" commands in the
report-status reply, send-pack terminates with non-zero status, and
in turn remote-curl exited with non-zero status before outputting
the blank line after the helper status printed by send-pack. No
error messages reach the user.

This caused users to see the following from git push over HTTP
when the remote side's update hook rejected the branch:

  $ git push http://... master
  Counting objects: 4, done.
  Delta compression using up to 6 threads.
  Compressing objects: 100% (2/2), done.
  Writing objects: 100% (3/3), 301 bytes, done.
  Total 3 (delta 0), reused 0 (delta 0)
  $

Always print a blank line after the send-pack process terminates,
ensuring the helper status report (if it was output) will be
correctly parsed by the calling transport-helper.c. This ensures
the helper doesn't abort before the status report can be shown to
the user.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMaking pathspec limited log play nicer with --first-parent
Junio C Hamano [Thu, 19 Jan 2012 19:58:45 +0000 (11:58 -0800)]
Making pathspec limited log play nicer with --first-parent

In a topic branch workflow, you often want to find the latest commit that
merged a side branch that touched a particular area of the system, so that
a new topic branch to work on that area can be forked from that commit.
For example, I wanted to find an appropriate fork-point to queue Luke's
changes related to git-p4 in contrib/fast-import/.

"git log --first-parent" traverses the first-parent chain, and "-m --stat"
shows the list of paths touched by commits including merge commits.  We
could ask the question this way:

    # What is the latest commit that touched that path?
    $ git log --first-parent --oneline -m --stat master |
      sed -e '/^ contrib\/fast-import\/git-p4 /q' | tail

The above finds that 8cbfc11 (Merge branch 'pw/p4-view-updates',
2012-01-06) was such a commit.

But a more natural way to spell this question is this:

    $ git log --first-parent --oneline -m --stat -1 master -- \
      contrib/fast-import/git-p4

Unfortunately, this does not work. It finds ecb7cf9 (git-p4: rewrite view
handling, 2012-01-02). This commit is a part of the merged topic branch
and is _not_ on the first-parent path from the 'master':

    $ git show-branch 8cbfc11 ecb7cf9
    ! [8cbfc11] Merge branch 'pw/p4-view-updates'
     ! [ecb7cf9] git-p4: rewrite view handling
    --
    -  [8cbfc11] Merge branch 'pw/p4-view-updates'
    +  [8cbfc11^2] git-p4: view spec documentation
    ++ [ecb7cf9] git-p4: rewrite view handling

The problem is caused by the merge simplification logic when it inspects
the merge commit 8cbfc11. In this case, the history leading to the tip of
'master' did not touch git-p4 since 'pw/p4-view-updates' topic forked, and
the result of the merge is simply a copy from the tip of the topic branch
in the view limited by the given pathspec.  The merge simplification logic
discards the history on the mainline side of the merge, and pretends as if
the sole parent of the merge is its second parent, i.e. the tip of the
topic. While this simplification is correct in the general case, it is at
least surprising if not outright wrong when the user explicitly asked to
show the first-parent history.

Here is an attempt to fix this issue, by not allowing us to compare the
merge result with anything but the first parent when --first-parent is in
effect, to avoid the history traversal veering off to the side branch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.9-rc2 v1.7.9-rc2
Junio C Hamano [Wed, 18 Jan 2012 23:53:35 +0000 (15:53 -0800)]
Git 1.7.9-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Wed, 18 Jan 2012 23:52:08 +0000 (15:52 -0800)]
Merge branch 'maint'

* maint:
  Git 1.7.8.4
  Git 1.7.7.6
  diff-index: enable recursive pathspec matching in unpack_trees

Conflicts:
GIT-VERSION-GEN

12 years agoGit 1.7.8.4 v1.7.8.4
Junio C Hamano [Wed, 18 Jan 2012 23:51:00 +0000 (15:51 -0800)]
Git 1.7.8.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint-1.7.7' into maint
Junio C Hamano [Wed, 18 Jan 2012 23:48:46 +0000 (15:48 -0800)]
Merge branch 'maint-1.7.7' into maint

* maint-1.7.7:
  Git 1.7.7.6
  diff-index: enable recursive pathspec matching in unpack_trees

Conflicts:
GIT-VERSION-GEN

12 years agoGit 1.7.7.6 v1.7.7.6
Junio C Hamano [Wed, 18 Jan 2012 23:46:31 +0000 (15:46 -0800)]
Git 1.7.7.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodiff-index: enable recursive pathspec matching in unpack_trees
Nguyen Thai Ngoc Duy [Sun, 15 Jan 2012 10:03:27 +0000 (17:03 +0700)]
diff-index: enable recursive pathspec matching in unpack_trees

The pathspec structure has a few bits of data to drive various operation
modes after we unified the pathspec matching logic in various codepaths.
For example, max_depth field is there so that "git grep" can limit the
output for files found in limited depth of tree traversal. Also in order
to show just the surface level differences in "git diff-tree", recursive
field stops us from descending into deeper level of the tree structure
when it is set to false, and this also affects pathspec matching when
we have wildcards in the pathspec.

The diff-index has always wanted the recursive behaviour, and wanted to
match pathspecs without any depth limit. But we forgot to do so when we
updated tree_entry_interesting() logic to unify the pathspec matching
logic.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/pull-signed-tag-doc'
Junio C Hamano [Wed, 18 Jan 2012 23:18:02 +0000 (15:18 -0800)]
Merge branch 'jc/pull-signed-tag-doc'

* jc/pull-signed-tag-doc:
  pulling signed tag: add howto document

12 years agopulling signed tag: add howto document
Junio C Hamano [Tue, 17 Jan 2012 22:52:24 +0000 (14:52 -0800)]
pulling signed tag: add howto document

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jk/credentials'
Junio C Hamano [Wed, 18 Jan 2012 23:16:53 +0000 (15:16 -0800)]
Merge branch 'jk/credentials'

* jk/credentials:
  credential-cache: ignore "connection refused" errors
  unix-socket: do not let close() or chdir() clobber errno during cleanup
  credential-cache: report more daemon connection errors
  unix-socket: handle long socket pathnames

12 years agoMerge branch 'nd/pathspec-recursion-cleanup'
Junio C Hamano [Wed, 18 Jan 2012 23:16:43 +0000 (15:16 -0800)]
Merge branch 'nd/pathspec-recursion-cleanup'

* nd/pathspec-recursion-cleanup:
  diff-index: enable recursive pathspec matching in unpack_trees
  Document limited recursion pathspec matching with wildcards

12 years agoMerge branch 'mh/maint-show-ref-doc'
Junio C Hamano [Wed, 18 Jan 2012 23:16:23 +0000 (15:16 -0800)]
Merge branch 'mh/maint-show-ref-doc'

* mh/maint-show-ref-doc:
  git-show-ref doc: typeset regexp in fixed width font
  git-show-ref: fix escaping in asciidoc source

12 years agoMerge branch 'tr/maint-word-diff-incomplete-line'
Junio C Hamano [Wed, 18 Jan 2012 23:16:19 +0000 (15:16 -0800)]
Merge branch 'tr/maint-word-diff-incomplete-line'

* tr/maint-word-diff-incomplete-line:
  word-diff: ignore '\ No newline at eof' marker

12 years agotest-lib: add the test_pause convenience function
Jens Lehmann [Tue, 17 Jan 2012 21:04:31 +0000 (22:04 +0100)]
test-lib: add the test_pause convenience function

Since 781f76b15 (test-lib: redirect stdin of tests) you can't simply put a
"bash &&" into a test for debugging purposes anymore. Instead you'll have
to use "bash <&6 >&3 2>&4".

As that invocation is not that easy to remember add the test_pause
convenience function. It invokes "$SHELL_PATH" to provide a sane shell
for the user.

This function also checks if the -v flag is given and will error out if
that is not the case instead of letting the test hang until ^D is pressed.

Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agowrite_remote_refs(): create packed (rather than extra) refs
Michael Haggerty [Tue, 17 Jan 2012 05:50:34 +0000 (06:50 +0100)]
write_remote_refs(): create packed (rather than extra) refs

write_remote_refs() creates new packed refs from references obtained
from the remote repository, which is "out of thin air" as far as the
local repository is concerned.  Previously it did this by creating
"extra" refs, then calling pack_refs() to bake them into the
packed-refs file.  Instead, create packed refs (in the packed
reference cache) directly, then call pack_refs().

Aside from being more logical, this is another step towards removing
extra refs entirely.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoadd_packed_ref(): new function in the refs API.
Michael Haggerty [Tue, 17 Jan 2012 05:50:33 +0000 (06:50 +0100)]
add_packed_ref(): new function in the refs API.

Add a new function add_packed_ref() that adds a reference directly to
the in-memory packed reference cache.  This will be useful for
creating local references while cloning.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoref_array: keep track of whether references are sorted
Michael Haggerty [Tue, 17 Jan 2012 05:50:32 +0000 (06:50 +0100)]
ref_array: keep track of whether references are sorted

Keep track of how many entries at the beginning of a ref_array are already
sorted.  In sort_ref_array(), return early if the the array is already
sorted (i.e., if no new references has been appended to the end of the
list since the last call to sort_ref_array()).

Sort ref_arrays only when needed, namely in search_ref_array() and in
do_for_each_ref().  However, never call sort_ref_array() on the
extra_refs, because extra_refs can contain multiple entries with the same
name and because sort_ref_array() not only sorts, but de-dups its
contents.

This change is currently not useful, because entries are not added to
ref_arrays after they are created.  But in a moment they will be...

Implementation note: we could store a binary "sorted" value instead of
an integer, but storing the number of sorted entries leaves the way
open for a couple of possible future optimizations:

* In sort_ref_array(), sort *only* the unsorted entries, then merge
  them with the sorted entries.  This should be faster if most of the
  entries are already sorted.

* Teach search_ref_array() to do a binary search of any sorted
  entries, and if unsuccessful do a linear search of any unsorted
  entries.  This would avoid the need to sort the list every time that
  search_ref_array() is called, and (given some intelligence about how
  often to sort) could significantly improve the speed in certain
  hypothetical usage patterns.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agopack_refs(): remove redundant check
Michael Haggerty [Tue, 17 Jan 2012 05:50:31 +0000 (06:50 +0100)]
pack_refs(): remove redundant check

handle_one_ref() only adds refs to the cbdata.ref_to_prune list if
(cbdata.flags & PACK_REFS_PRUNE) is set.  So any references in this
list at the end of pack_refs() can be pruned unconditionally.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agocredential-cache: ignore "connection refused" errors
Jeff King [Tue, 17 Jan 2012 06:02:32 +0000 (01:02 -0500)]
credential-cache: ignore "connection refused" errors

The credential-cache helper will try to connect to its
daemon over a unix socket. Originally, a failure to do so
was silently ignored, and we would either give up (if
performing a "get" or "erase" operation), or spawn a new
daemon (for a "store" operation).

But since 8ec6c8d, we try to report more errors. We detect a
missing daemon by checking for ENOENT on our connection
attempt.  If the daemon is missing, we continue as before
(giving up or spawning a new daemon). For any other error,
we die and report the problem.

However, checking for ENOENT is not sufficient for a missing
daemon. We might also get ECONNREFUSED if a dead daemon
process left a stale socket. This generally shouldn't
happen, as the daemon cleans up after itself, but the daemon
may not always be given a chance to do so (e.g., power loss,
"kill -9").

The resulting state is annoying not just because the helper
outputs an extra useless message, but because it actually
blocks the helper from spawning a new daemon to replace the
stale socket.

Fix it by checking for ECONNREFUSED.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jn/maint-gitweb-grep-fix'
Junio C Hamano [Tue, 17 Jan 2012 00:45:56 +0000 (16:45 -0800)]
Merge branch 'jn/maint-gitweb-grep-fix'

* jn/maint-gitweb-grep-fix:
  gitweb: Harden "grep" search against filenames with ':'
  gitweb: Fix file links in "grep" search

12 years agomailinfo: with -b, keep space after [foo]
Thomas Rast [Mon, 16 Jan 2012 10:53:01 +0000 (11:53 +0100)]
mailinfo: with -b, keep space after [foo]

The logic for the -b mode, where [PATCH] is dropped but [foo] is not,
silently ate all spaces after the ].

Fix this by keeping the next isspace() character, if there is any.
Being more thorough is pointless, as the later cleanup_space() call
will normalize any sequence of whitespace to a single ' '.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoam: learn passing -b to mailinfo
Thomas Rast [Mon, 16 Jan 2012 10:53:00 +0000 (11:53 +0100)]
am: learn passing -b to mailinfo

git-am could pass -k to mailinfo, but not -b.  Introduce an option
that does so.  We change the meaning of the 'keep' state file, but are
careful not to cause a problem unless you downgrade in the middle of
an 'am' run.

This uncovers a bug in mailinfo -b, hence the failing test.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoindex-pack: eliminate unlimited recursion in get_base_data()
Nguyễn Thái Ngọc Duy [Sat, 14 Jan 2012 12:19:55 +0000 (19:19 +0700)]
index-pack: eliminate unlimited recursion in get_base_data()

Revese the order of delta applying so that by the time a delta is
applied, its base is either non-delta or already inflated.
get_base_data() is still recursive, but because base's data is always
ready, the inner get_base_data() call never has any chance to call
itself again.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoindex-pack: eliminate recursion in find_unresolved_deltas
Nguyễn Thái Ngọc Duy [Sat, 14 Jan 2012 12:19:54 +0000 (19:19 +0700)]
index-pack: eliminate recursion in find_unresolved_deltas

Current find_unresolved_deltas() links all bases together in a form of
tree, using struct base_data, with prev_base pointer to point to
parent node. Then it traverses down from parent to children in
recursive manner with all base_data allocated on stack.

To eliminate recursion, we simply need to put all on heap
(parse_pack_objects and fix_unresolved_deltas). After that, it's
simple non-recursive depth-first traversal loop. Each node also
maintains its own state (ofs and ref indices) to iterate over all
children nodes.

So we process one node:

 - if it returns a new (child) node (a parent base), we link it to our
   tree, then process the new node.

 - if it returns nothing, the node is done, free it. We go back to
   parent node and resume whatever it's doing.

and do it until we have no nodes to process.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoEliminate recursion in setting/clearing marks in commit list
Nguyễn Thái Ngọc Duy [Sat, 14 Jan 2012 12:19:53 +0000 (19:19 +0700)]
Eliminate recursion in setting/clearing marks in commit list

Recursion in a DAG is generally a bad idea because it could be very
deep. Be defensive and avoid recursion in mark_parents_uninteresting()
and clear_commit_marks().

mark_parents_uninteresting() learns a trick from clear_commit_marks()
to avoid malloc() in (dominant) single-parent case.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agodiff-index: enable recursive pathspec matching in unpack_trees
Nguyen Thai Ngoc Duy [Sun, 15 Jan 2012 10:03:27 +0000 (17:03 +0700)]
diff-index: enable recursive pathspec matching in unpack_trees

The pathspec structure has a few bits of data to drive various operation
modes after we unified the pathspec matching logic in various codepaths.
For example, max_depth field is there so that "git grep" can limit the
output for files found in limited depth of tree traversal. Also in order
to show just the surface level differences in "git diff-tree", recursive
field stops us from descending into deeper level of the tree structure
when it is set to false, and this also affects pathspec matching when
we have wildcards in the pathspec.

The diff-index has always wanted the recursive behaviour, and wanted to
match pathspecs without any depth limit. But we forgot to do so when we
updated tree_entry_interesting() logic to unify the pathspec matching
logic.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoDocument limited recursion pathspec matching with wildcards
Nguyễn Thái Ngọc Duy [Sat, 14 Jan 2012 09:23:22 +0000 (16:23 +0700)]
Document limited recursion pathspec matching with wildcards

It's actually unlimited recursion if wildcards are active regardless
--max-depth

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-show-ref doc: typeset regexp in fixed width font
Michael Haggerty [Fri, 13 Jan 2012 16:39:16 +0000 (17:39 +0100)]
git-show-ref doc: typeset regexp in fixed width font

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-show-ref: fix escaping in asciidoc source
Michael Haggerty [Fri, 13 Jan 2012 16:39:15 +0000 (17:39 +0100)]
git-show-ref: fix escaping in asciidoc source

Two "^" characters were incorrectly being interpreted as markup for
superscripting.  Fix them by writing them as attribute references
"{caret}".

Although a single "^" character in a paragraph cannot be
misinterpreted in this way, also write other "^" characters as
"{caret}" in the interest of good hygiene (unless they are in literal
paragraphs, of course, in which context attribute references are not
recognized).

Spell "{}" consistently, namely *not* quoted as "\{\}".  Since the
braces are empty, they cannot be interpreted as an attribute
reference, and either spelling is OK.  So arbitrarily choose one
variation and use it consistently.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoGit 1.7.9-rc1 v1.7.9-rc1
Junio C Hamano [Fri, 13 Jan 2012 07:43:28 +0000 (23:43 -0800)]
Git 1.7.9-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'jc/request-pull-show-head-4'
Junio C Hamano [Fri, 13 Jan 2012 07:34:30 +0000 (23:34 -0800)]
Merge branch 'jc/request-pull-show-head-4'

* jc/request-pull-show-head-4:
  request-pull: use the real fork point when preparing the message

12 years agoMerge branch 'tr/maint-mailinfo'
Junio C Hamano [Fri, 13 Jan 2012 07:34:26 +0000 (23:34 -0800)]
Merge branch 'tr/maint-mailinfo'

* tr/maint-mailinfo:
  mailinfo documentation: accurately describe non -k case

12 years agoMerge branch 'ss/maint-msys-cvsexportcommit'
Junio C Hamano [Fri, 13 Jan 2012 07:34:21 +0000 (23:34 -0800)]
Merge branch 'ss/maint-msys-cvsexportcommit'

* ss/maint-msys-cvsexportcommit:
  git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS
  t9200: On MSYS, do not pass Windows-style paths to CVS

12 years agoMerge branch 'jk/maint-upload-archive'
Junio C Hamano [Fri, 13 Jan 2012 07:34:17 +0000 (23:34 -0800)]
Merge branch 'jk/maint-upload-archive'

* jk/maint-upload-archive:
  archive: re-allow HEAD:Documentation on a remote invocation

12 years agoMerge branch 'maint'
Junio C Hamano [Fri, 13 Jan 2012 07:33:39 +0000 (23:33 -0800)]
Merge branch 'maint'

* maint:
  Update draft release notes to 1.7.8.4
  Update draft release notes to 1.7.7.6
  Update draft release notes to 1.7.6.6
  thin-pack: try harder to use preferred base objects as base

12 years agoUpdate draft release notes to 1.7.8.4
Junio C Hamano [Fri, 13 Jan 2012 07:33:29 +0000 (23:33 -0800)]
Update draft release notes to 1.7.8.4

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint-1.7.7' into maint
Junio C Hamano [Fri, 13 Jan 2012 07:31:46 +0000 (23:31 -0800)]
Merge branch 'maint-1.7.7' into maint

* maint-1.7.7:
  Update draft release notes to 1.7.7.6
  Update draft release notes to 1.7.6.6
  thin-pack: try harder to use preferred base objects as base

12 years agoUpdate draft release notes to 1.7.7.6
Junio C Hamano [Fri, 13 Jan 2012 07:31:41 +0000 (23:31 -0800)]
Update draft release notes to 1.7.7.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint-1.7.6' into maint-1.7.7
Junio C Hamano [Fri, 13 Jan 2012 07:31:05 +0000 (23:31 -0800)]
Merge branch 'maint-1.7.6' into maint-1.7.7

* maint-1.7.6:
  Update draft release notes to 1.7.6.6
  thin-pack: try harder to use preferred base objects as base

12 years agoUpdate draft release notes to 1.7.6.6
Junio C Hamano [Fri, 13 Jan 2012 07:30:53 +0000 (23:30 -0800)]
Update draft release notes to 1.7.6.6

Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agothin-pack: try harder to use preferred base objects as base
Jeff King [Thu, 12 Jan 2012 22:32:34 +0000 (17:32 -0500)]
thin-pack: try harder to use preferred base objects as base

When creating a pack using objects that reside in existing packs, we try
to avoid recomputing futile delta between an object (trg) and a candidate
for its base object (src) if they are stored in the same packfile, and trg
is not recorded as a delta already. This heuristics makes sense because it
is likely that we tried to express trg as a delta based on src but it did
not produce a good delta when we created the existing pack.

As the pack heuristics prefer producing delta to remove data, and Linus's
law dictates that the size of a file grows over time, we tend to record
the newest version of the file as inflated, and older ones as delta
against it.

When creating a thin-pack to transfer recent history, it is likely that we
will try to send an object that is recorded in full, as it is newer.  But
the heuristics to avoid recomputing futile delta effectively forbids us
from attempting to express such an object as a delta based on another
object. Sending an object in full is often more expensive than sending a
suboptimal delta based on other objects, and it is even more so if we
could use an object we know the receiving end already has (i.e. preferred
base object) as the delta base.

Tweak the recomputation avoidance logic, so that we do not punt on
computing delta against a preferred base object.

The effect of this change can be seen on two simulated upload-pack
workloads. The first is based on 44 reflog entries from my git.git
origin/master reflog, and represents the packs that kernel.org sent me git
updates for the past month or two. The second workload represents much
larger fetches, going from git's v1.0.0 tag to v1.1.0, then v1.1.0 to
v1.2.0, and so on.

The table below shows the average generated pack size and the average CPU
time consumed for each dataset, both before and after the patch:

                  dataset
            | reflog | tags
---------------------------------
     before | 53358  | 2750977
size  after | 32398  | 2668479
     change |   -39% |      -3%
---------------------------------
     before |  0.18  | 1.12
CPU   after |  0.18  | 1.15
     change |    +0% |      +3%

This patch makes a much bigger difference for packs with a shorter slice
of history (since its effect is seen at the boundaries of the pack) though
it has some benefit even for larger packs.

Signed-off-by: Jeff King <peff@peff.net>
Acked-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoword-diff: ignore '\ No newline at eof' marker
Thomas Rast [Thu, 12 Jan 2012 11:15:33 +0000 (12:15 +0100)]
word-diff: ignore '\ No newline at eof' marker

The word-diff logic accumulates + and - lines until another line type
appears (normally [ @\]), at which point it generates the word diff.
This is usually correct, but it breaks when the preimage does not have
a newline at EOF:

  $ printf "%s" "a a a" >a
  $ printf "%s\n" "a ab a" >b
  $ git diff --no-index --word-diff a b
  diff --git 1/a 2/b
  index 9f68e94..6a7c02f 100644
  --- 1/a
  +++ 2/b
  @@ -1 +1 @@
  [-a a a-]
   No newline at end of file
  {+a ab a+}

Because of the order of the lines in a unified diff

  @@ -1 +1 @@
  -a a a
  \ No newline at end of file
  +a ab a

the '\' line flushed the buffers, and the - and + lines were never
matched with each other.

A proper fix would defer such markers until the end of the hunk.
However, word-diff is inherently whitespace-ignoring, so as a cheap
fix simply ignore the marker (and hide it from the output).

We use a prefix match for '\ ' to parallel the logic in
apply.c:parse_fragment().  We currently do not localize this string
(just accept other variants of it in git-apply), but this should be
future-proof.

Noticed-by: Ivan Shirokoff <shirokoff@yandex-team.ru>
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoarchive: re-allow HEAD:Documentation on a remote invocation
Carlos Martín Nieto [Wed, 11 Jan 2012 12:12:38 +0000 (13:12 +0100)]
archive: re-allow HEAD:Documentation on a remote invocation

The tightening done in (ee27ca4a: archive: don't let remote clients
get unreachable commits, 2011-11-17) went too far and disallowed
HEAD:Documentation as it would try to find "HEAD:Documentation" as a
ref.

Only DWIM the "HEAD" part to see if it exists as a ref. Once we're
sure that we've been given a valid ref, we follow the normal code
path. This still disallows attempts to access commits which are not
branch tips.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agoMerge branch 'maint'
Junio C Hamano [Thu, 12 Jan 2012 03:11:28 +0000 (19:11 -0800)]
Merge branch 'maint'

* maint:
  attr: fix leak in free_attr_elem
  t2203: fix wrong commit command

12 years agoMerge branch 'maint-1.7.7' into maint
Junio C Hamano [Thu, 12 Jan 2012 03:11:13 +0000 (19:11 -0800)]
Merge branch 'maint-1.7.7' into maint

* maint-1.7.7:
  attr: fix leak in free_attr_elem
  t2203: fix wrong commit command

12 years agoMerge branch 'maint-1.7.6' into maint-1.7.7
Junio C Hamano [Thu, 12 Jan 2012 03:11:00 +0000 (19:11 -0800)]
Merge branch 'maint-1.7.6' into maint-1.7.7

* maint-1.7.6:
  attr: fix leak in free_attr_elem
  t2203: fix wrong commit command

12 years agoattr: fix leak in free_attr_elem
Jeff King [Thu, 12 Jan 2012 03:05:03 +0000 (22:05 -0500)]
attr: fix leak in free_attr_elem

This function frees the individual "struct match_attr"s we
have allocated, but forgot to free the array holding their
pointers, leading to a minor memory leak (but it can add up
after checking attributes for paths in many directories).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agosequencer: factor code out of revert builtin
Ramkumar Ramachandra [Wed, 11 Jan 2012 18:15:57 +0000 (23:45 +0530)]
sequencer: factor code out of revert builtin

Expose the cherry-picking machinery through a public
sequencer_pick_revisions() (renamed from pick_revisions() in
builtin/revert.c), so that cherry-picking and reverting are special
cases of a general sequencer operation.  The cherry-pick builtin is
now a thin wrapper that does command-line argument parsing before
calling into sequencer_pick_revisions().  In the future, we can write
a new "foo" builtin that calls into the sequencer like:

  memset(&opts, 0, sizeof(opts));
  opts.action = REPLAY_FOO;
  opts.revisions = xmalloc(sizeof(*opts.revs));
  parse_args_populate_opts(argc, argv, &opts);
  init_revisions(opts.revs);
  sequencer_pick_revisions(&opts);

This patch does not intend to make any functional changes.  Check
with:

  $ git blame -s -C HEAD^..HEAD -- sequencer.c | grep -C3 '^[^^]'

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agorevert: prepare to move replay_action to header
Ramkumar Ramachandra [Wed, 11 Jan 2012 18:15:56 +0000 (23:45 +0530)]
revert: prepare to move replay_action to header

REVERT and CHERRY_PICK and are unsuitable names for an enumerator in a
public interface, because they are generic enough to be likely to
clash with identifiers with other meanings.  Rename to REPLAY_REVERT
and REPLAY_PICK as preparation for exposing them.

Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS
Sebastian Schuberth [Wed, 11 Jan 2012 09:21:10 +0000 (10:21 +0100)]
git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS

Due to MSYS path mangling GIT_DIR contains a Windows-style path when
checked inside a Perl script even if GIT_DIR was previously set to an
MSYS-style path in a shell script. So explicitly convert to an MSYS-style
path before calling Perl's rel2abs() to make it work.

This fix was inspired by a very similar patch in WebKit:

http://trac.webkit.org/changeset/76255/trunk/Tools/Scripts/commit-log-editor

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Tested-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agot9200: On MSYS, do not pass Windows-style paths to CVS
Sebastian Schuberth [Wed, 11 Jan 2012 09:20:14 +0000 (10:20 +0100)]
t9200: On MSYS, do not pass Windows-style paths to CVS

For details, see the commit message of 4114156ae9. Note that while using
$PWD as part of GIT_DIR is not required here, it does no harm and it is
more consistent. In addition, on MSYS using an environment variable should
be slightly faster than spawning an external executable.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agounix-socket: do not let close() or chdir() clobber errno during cleanup
Jonathan Nieder [Wed, 11 Jan 2012 23:50:10 +0000 (17:50 -0600)]
unix-socket: do not let close() or chdir() clobber errno during cleanup

unix_stream_connect and unix_stream_listen return -1 on error, with
errno set by the failing underlying call to allow the caller to write
a useful diagnosis.

Unfortunately the error path involves a few system calls itself, such
as close(), that can themselves touch errno.

This is not as worrisome as it might sound.  If close() fails, this
just means substituting one meaningful error message for another,
which is perfectly fine.  However, when the call _succeeds_, it is
allowed to (and sometimes might) clobber errno along the way with some
undefined value, so it is good higiene to save errno and restore it
immediately before returning to the caller.  Do so.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agomailinfo documentation: accurately describe non -k case
Thomas Rast [Wed, 11 Jan 2012 20:13:42 +0000 (21:13 +0100)]
mailinfo documentation: accurately describe non -k case

Since its very first description of -k, the documentation for
git-mailinfo claimed that (in the case without -k) after cleaning up
bracketed strings [blah], it would insert [PATCH].

It doesn't; on the contrary, one of the important jobs of mailinfo is
to remove those strings.

Since we're already there, rewrite the paragraph to give a complete
enumeration of all the transformations.  Specifically, it was missing
the whitespace normalization (run of isspace(c) -> ' ') and the
removal of leading ':'.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: add tests demonstrating spec overlay ambiguities
Pete Wyckoff [Wed, 11 Jan 2012 23:31:10 +0000 (18:31 -0500)]
git-p4: add tests demonstrating spec overlay ambiguities

Introduce new tests that look more closely at overlay situations
when there are conflicting files.  Five of these are broken.
Document the brokenness.

This is a fundamental problem with how git-p4 only "borrows" a
client spec.  At some sync operation, a new change can contain
a file which is already in the repo or explicitly deleted through
another mapping.  To sort this out would involve listing all the
files in the client spec to find one with a higher priority.
While this is not too hard for the initial import, subsequent
sync operations would be very costly.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: adjust test to adhere to stricter useClientSpec
Pete Wyckoff [Wed, 11 Jan 2012 23:31:09 +0000 (18:31 -0500)]
git-p4: adjust test to adhere to stricter useClientSpec

This test relied on what now is seen as broken behavior
in --use-client-spec.  Change it to make sure it works
according to the new behavior as described in
ecb7cf9 (git-p4: rewrite view handling, 2012-01-02) and
c700b68 (git-p4: test client view handling, 2012-01-02).

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 years agogit-p4: clarify comment
Pete Wyckoff [Wed, 11 Jan 2012 23:31:08 +0000 (18:31 -0500)]
git-p4: clarify comment

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>