gitweb.git
remote rename: warn when refspec was not updatedMartin von Zweigbergk Sat, 3 Sep 2011 15:26:59 +0000 (11:26 -0400)

remote rename: warn when refspec was not updated

When renaming a remote, we also try to update the fetch refspec
accordingly, but only if it has the default format. For others, such
as refs/heads/master:refs/heads/origin, we are conservative and leave
it untouched. Let's give the user a warning about refspecs that are
not updated, so he can manually update the config if necessary.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: "rename o foo" should not rename ref "origin... Martin von Zweigbergk Fri, 2 Sep 2011 00:50:34 +0000 (20:50 -0400)

remote: "rename o foo" should not rename ref "origin/bar"

When renaming a remote called 'o' using 'git remote rename o foo', git
should also rename any remote-tracking branches for the remote. This
does happen, but any remote-tracking branches starting with
'refs/remotes/o', such as 'refs/remotes/origin/bar', will also be
renamed (to 'refs/remotes/foorigin/bar' in this case).

Fix it by simply matching one more character, up to the slash
following the remote name.

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: write correct fetch spec when renaming remote... Martin von Zweigbergk Fri, 2 Sep 2011 00:50:33 +0000 (20:50 -0400)

remote: write correct fetch spec when renaming remote 'remote'

When renaming a remote whose name is contained in a configured fetch
refspec for that remote, we currently replace the first occurrence of
the remote name in the refspec. This is correct in most cases, but
breaks if the remote name occurs in the fetch refspec before the
expected place. For example, we currently change

[remote "remote"]
url = git://git.kernel.org/pub/scm/git/git.git
fetch = +refs/heads/*:refs/remotes/remote/*

into

[remote "origin"]
url = git://git.kernel.org/pub/scm/git/git.git
fetch = +refs/heads/*:refs/origins/remote/*

Reduce the risk of changing incorrect sections of the refspec by
matching the entire ":refs/remotes/<name>/" instead of just "<name>".

Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

SubmittingPathces: remove Cogito referenceSverre Rabbelier Sun, 11 Sep 2011 12:38:10 +0000 (14:38 +0200)

SubmittingPathces: remove Cogito reference

Removing Cogito leaves just git and StGit, which is a rather
incomplete list of git diff tools available. Sidestep the problem
of deciding what tools to mention by not mentioning any.

Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsck: do not abort upon finding an empty blobJunio C Hamano Mon, 12 Sep 2011 01:03:38 +0000 (18:03 -0700)

fsck: do not abort upon finding an empty blob

Asking fwrite() to write one item of size bytes results in fwrite()
reporting "I wrote zero item", when size is zero. Instead, we could
ask it to write "size" items of 1 byte and expect it to report that
"I wrote size items" when it succeeds, with any value of size,
including zero.

Noticed and reported by BJ Hargrave.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs.c: make create_cached_refs() staticJunio C Hamano Sun, 11 Sep 2011 22:59:26 +0000 (15:59 -0700)

refs.c: make create_cached_refs() static

There is nobody outside that calls into this helper function.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/revert.c: make commit_list_append() staticJunio C Hamano Sun, 11 Sep 2011 22:29:21 +0000 (15:29 -0700)

builtin/revert.c: make commit_list_append() static

There is nobody outside that calls into this helper function.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

obstack.c: Fix some sparse warningsRamsay Jones Sun, 11 Sep 2011 19:26:53 +0000 (20:26 +0100)

obstack.c: Fix some sparse warnings

In particular, sparse issues the following warnings:

compat/obstack.c:176:17: warning: Using plain integer as NULL pointer
compat/obstack.c:224:17: warning: Using plain integer as NULL pointer
compat/obstack.c:324:16: warning: Using plain integer as NULL pointer
compat/obstack.c:329:16: warning: Using plain integer as NULL pointer
compat/obstack.c:347:16: warning: Using plain integer as NULL pointer
compat/obstack.c:362:19: warning: Using plain integer as NULL pointer
compat/obstack.c:379:29: warning: Using plain integer as NULL pointer
compat/obstack.c:399:1: error: symbol 'print_and_abort' redeclared with \
different type (originally declared at compat/obstack.c:95) \
- different modifiers

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sparse: Fix an "Using plain integer as NULL pointer... Ramsay Jones Sun, 11 Sep 2011 19:25:48 +0000 (20:25 +0100)

sparse: Fix an "Using plain integer as NULL pointer" warning

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: Make dependency directory creation less noisyRamsay Jones Sun, 11 Sep 2011 19:40:18 +0000 (20:40 +0100)

Makefile: Make dependency directory creation less noisy

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

receive-pack: check connectivity before concluding... Junio C Hamano Fri, 2 Sep 2011 23:52:08 +0000 (16:52 -0700)

receive-pack: check connectivity before concluding "git push"

Signed-off-by: Junio C Hamano <gitster@pobox.com>

check_everything_connected(): libifyJunio C Hamano Fri, 2 Sep 2011 23:33:22 +0000 (16:33 -0700)

check_everything_connected(): libify

Extract the helper function and the type definition of the iterator
function it uses out of builtin/fetch.c into a separate source and a
header file.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

check_everything_connected(): refactor to use an iteratorJunio C Hamano Fri, 2 Sep 2011 23:22:47 +0000 (16:22 -0700)

check_everything_connected(): refactor to use an iterator

We will be using the same "rev-list --verify-objects" logic to add a
sanity check to the receiving end of "git push" in the same way, but the
list of commits that are checked come from a structure with a different
shape over there.

Update the function to take an iterator to make it easier to reuse it in
different contexts.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: verify we have everything we need before updatin... Junio C Hamano Thu, 1 Sep 2011 22:43:35 +0000 (15:43 -0700)

fetch: verify we have everything we need before updating our ref

The "git fetch" command works in two phases. The remote side tells us what
objects are at the tip of the refs we are fetching from, and transfers the
objects missing from our side. After storing the objects in our repository,
we update our remote tracking branches to point at the updated tips of the
refs.

A broken or malicious remote side could send a perfectly well-formed pack
data during the object transfer phase, but there is no guarantee that the
given data actually fill the gap between the objects we originally had and
the refs we are updating to.

Although this kind of breakage can be caught by running fsck after a
fetch, it is much cheaper to verify that everything that is reachable from
the tips of the refs we fetched are indeed fully connected to the tips of
our current set of refs before we update them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: skip on-demand checking when no submodules are... Jens Lehmann Fri, 9 Sep 2011 18:22:03 +0000 (20:22 +0200)

fetch: skip on-demand checking when no submodules are configured

It makes no sense to do the - possibly very expensive - call to "rev-list
<new-ref-sha1> --not --all" in check_for_new_submodule_commits() when
there aren't any submodules configured.

Leave check_for_new_submodule_commits() early when no name <-> path
mappings for submodules are found in the configuration. To make that work
reading the configuration had to be moved further up in cmd_fetch(), as
doing that after the actual fetch of the superproject was too late.

Reported-by: Martin Fick <mfick@codeaurora.org>
Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: -v does not automatically imply --listMichael J Gruber Thu, 8 Sep 2011 21:09:50 +0000 (14:09 -0700)

branch: -v does not automatically imply --list

"branch -v" without other options or parameters still works in the list
mode, but that is not because there is "-v" but because there is no
parameter nor option.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: add split message parts to %(contents:*).Michał Górny Wed, 7 Sep 2011 17:46:08 +0000 (13:46 -0400)

for-each-ref: add split message parts to %(contents:*).

The %(body) placeholder returns the whole body of a tag or
commit, including the signature. However, callers may want
to get just the body without signature, or just the
signature.

Rather than change the meaning of %(body), which might break
some scripts, this patch introduces a new set of
placeholders which break down the %(contents) placeholder
into its constituent parts.

[jk: initial patch by mg, rebased on top of my refactoring
and with tests by me]

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: handle multiline subjects like --prettyJeff King Wed, 7 Sep 2011 17:44:56 +0000 (13:44 -0400)

for-each-ref: handle multiline subjects like --pretty

Generally the format of a git tag or commit message is:

subject

body body body
body body body

However, we occasionally see multiline subjects like:

subject
with multiple
lines

body body body
body body body

The rest of git treats these multiline subjects as something
to be concatenated and shown as a single line (e.g., "git
log --pretty=format:%s" will do so since f53bd74). For
consistency, for-each-ref should do the same with its
"%(subject)".

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: refactor subject and body placeholder... Jeff King Wed, 7 Sep 2011 17:44:07 +0000 (13:44 -0400)

for-each-ref: refactor subject and body placeholder parsing

The find_subpos function was a little hard to use, as well
as to read. It would sometimes write into the subject and
body pointers, and sometimes not. The body pointer sometimes
could be compared to subject, and sometimes not. When
actually duplicating the subject, the caller was forced to
figure out again how long the subject is (which is not too
big a deal when the subject is a single line, but hard to
extend).

The refactoring makes the function more straightforward, both
to read and to use. We will always put something into the
subject and body pointers, and we return explicit lengths
for them, too.

This lays the groundwork both for more complex subject
parsing (e.g., multiline), as well as splitting the body
into subparts (like the text versus the signature).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6300: add more body-parsing testsJeff King Wed, 7 Sep 2011 17:43:28 +0000 (13:43 -0400)

t6300: add more body-parsing tests

The current tests don't actually check parsing commit and
tag messages that have both a subject and a body (they just
have single-line messages).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t7004: factor out gpg setupJeff King Wed, 7 Sep 2011 17:42:39 +0000 (13:42 -0400)

t7004: factor out gpg setup

Other test scripts may want to look at or verify signed
tags, and the setup is non-trivial. Let's factor this out
into lib-gpg.sh for other tests to use.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

RelNotes/1.7.7: minor fixesMichael J Gruber Wed, 7 Sep 2011 11:54:11 +0000 (13:54 +0200)

RelNotes/1.7.7: minor fixes

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: normalize alt_odb path before comparing... Hui Wang Wed, 7 Sep 2011 10:37:47 +0000 (18:37 +0800)

sha1_file: normalize alt_odb path before comparing and storing

When it needs to compare and add an alt object path to the
alt_odb_list, we normalize this path first since comparing normalized
path is easy to get correct result.

Use strbuf to replace some string operations, since it is cleaner and
safer.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Hui Wang <Hui.Wang@windriver.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Minor update to how-to maintain gitJunio C Hamano Wed, 7 Sep 2011 18:18:18 +0000 (11:18 -0700)

Minor update to how-to maintain git

A few more parts of this document is stale that needs updating
to reflect the reality, but I do not regularly rebase topics that
are only in "pu" anymore, which may be noteworthy for a commit.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

http: avoid empty error messages for some curl errorsJonathan Nieder Mon, 5 Sep 2011 22:22:02 +0000 (17:22 -0500)

http: avoid empty error messages for some curl errors

When asked to fetch over SSL without a valid
/etc/ssl/certs/ca-certificates.crt file, "git fetch" writes

error: while accessing https://github.com/torvalds/linux.git/info/refs

which is a little disconcerting. Better to fall back to
curl_easy_strerror(result) when the error string is empty, like the
curl utility does:

error: Problem with the SSL CA cert (path? access rights?) while
accessing https://github.com/torvalds/linux.git/info/refs

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http: remove extra newline in error messageJonathan Nieder Mon, 5 Sep 2011 22:29:34 +0000 (17:29 -0500)

http: remove extra newline in error message

There is no need for a blank line between the detailed error message
and the later "fatal: HTTP request failed" notice. Keep the newline
written by error() itself and eliminate the extra one.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

consolidate pathspec_prefix and common_prefixJunio C Hamano Tue, 6 Sep 2011 19:32:30 +0000 (12:32 -0700)

consolidate pathspec_prefix and common_prefix

The implementation from pathspec_prefix (slightly modified) replaces the
current common_prefix, because it also respects glob characters.

Based on a patch by Clemens Buchacher.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

remove prefix argument from pathspec_prefixClemens Buchacher Sun, 4 Sep 2011 10:41:59 +0000 (12:41 +0200)

remove prefix argument from pathspec_prefix

Passing a prefix to a function that is supposed to find the prefix is
strange. And it's really only used if the pathspec is NULL. Make the
callers handle this case instead.

As we are always returning a fresh copy of a string (or NULL), change the
type of the returned value to non-const "char *".

Signed-off-by: Clemens Buchacher <drizzd@aon.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.7Junio C Hamano Tue, 6 Sep 2011 18:48:21 +0000 (11:48 -0700)

Update draft release notes to 1.7.7

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'rc/histogram-diff'Junio C Hamano Tue, 6 Sep 2011 18:42:58 +0000 (11:42 -0700)

Merge branch 'rc/histogram-diff'

* rc/histogram-diff:
xdiff/xprepare: initialise xdlclassifier_t cf in xdl_prepare_env()

Merge branch 'cb/maint-ls-files-error-report'Junio C Hamano Tue, 6 Sep 2011 18:42:55 +0000 (11:42 -0700)

Merge branch 'cb/maint-ls-files-error-report'

* cb/maint-ls-files-error-report:
t3005: do not assume a particular order of stdout and stderr of git-ls-files

Merge branch 'mh/check-ref-format-print-normalize'Junio C Hamano Tue, 6 Sep 2011 18:42:52 +0000 (11:42 -0700)

Merge branch 'mh/check-ref-format-print-normalize'

* mh/check-ref-format-print-normalize:
Forbid DEL characters in reference names
check-ref-format --print: Normalize refnames that start with slashes

Sync with 1.7.6.2Junio C Hamano Tue, 6 Sep 2011 18:42:12 +0000 (11:42 -0700)

Sync with 1.7.6.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git 1.7.6.2 v1.7.6.2Junio C Hamano Tue, 6 Sep 2011 18:41:02 +0000 (11:41 -0700)

Git 1.7.6.2

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Revert "Merge branch 'cb/maint-quiet-push' into maint"Junio C Hamano Tue, 6 Sep 2011 18:06:32 +0000 (11:06 -0700)

Revert "Merge branch 'cb/maint-quiet-push' into maint"

This reverts commit ffa69e61d3c5730bd4b65a465efc130b0ef3c7df, reversing
changes made to 4a13c4d14841343d7caad6ed41a152fee550261d.

Adding a new command line option to receive-pack and feed it from
send-pack is not an acceptable way to add features, as there is no
guarantee that your updated send-pack will be talking to updated
receive-pack. New features need to be added via the capability mechanism
negotiated over the protocol.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

test: fetch/receive with fsckobjectsJunio C Hamano Mon, 5 Sep 2011 01:19:36 +0000 (18:19 -0700)

test: fetch/receive with fsckobjects

Add tests for the new fetch.fsckobjects, and also tests for
receive.fsckobjects we have had for quite some time.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

transfer.fsckobjects: unify fetch/receive.fsckobjectsJunio C Hamano Sun, 4 Sep 2011 19:37:45 +0000 (12:37 -0700)

transfer.fsckobjects: unify fetch/receive.fsckobjects

This single variable can be used to set instead of setting fsckobjects
variable for fetch & receive independently.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch.fsckobjects: verify downloaded objectsJunio C Hamano Sun, 4 Sep 2011 19:26:14 +0000 (12:26 -0700)

fetch.fsckobjects: verify downloaded objects

This corresponds to receive.fsckobjects configuration variable added (a
lot) earlier in 20dc001 (receive-pack: allow using --strict mode for
unpacking objects, 2008-02-25).

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.7Junio C Hamano Fri, 2 Sep 2011 20:26:02 +0000 (13:26 -0700)

Update draft release notes to 1.7.7

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'js/i18n-scripts-2'Junio C Hamano Fri, 2 Sep 2011 20:18:42 +0000 (13:18 -0700)

Merge branch 'js/i18n-scripts-2'

* js/i18n-scripts-2:
bisect: take advantage of gettextln, eval_gettextln.

Merge branch 'tr/maint-t3903-misquoted-command'Junio C Hamano Fri, 2 Sep 2011 20:18:39 +0000 (13:18 -0700)

Merge branch 'tr/maint-t3903-misquoted-command'

* tr/maint-t3903-misquoted-command:
t3903: fix misquoted rev-parse invocation

Merge branch 'bc/bisect-test-use-shell-path'Junio C Hamano Fri, 2 Sep 2011 20:18:37 +0000 (13:18 -0700)

Merge branch 'bc/bisect-test-use-shell-path'

* bc/bisect-test-use-shell-path:
t6030: use $SHELL_PATH to invoke user's preferred shell instead of bare sh

Merge branch 'va/p4-branch-import-test-update'Junio C Hamano Fri, 2 Sep 2011 20:18:33 +0000 (13:18 -0700)

Merge branch 'va/p4-branch-import-test-update'

* va/p4-branch-import-test-update:
git-p4: simple branch tests edits

Merge branch 'tr/maint-strbuf-grow-nul-termination'Junio C Hamano Fri, 2 Sep 2011 20:18:29 +0000 (13:18 -0700)

Merge branch 'tr/maint-strbuf-grow-nul-termination'

* tr/maint-strbuf-grow-nul-termination:
strbuf_grow(): maintain nul-termination even for new buffer

Merge branch 'tr/maint-ident-to-git-memmove'Junio C Hamano Fri, 2 Sep 2011 20:18:25 +0000 (13:18 -0700)

Merge branch 'tr/maint-ident-to-git-memmove'

* tr/maint-ident-to-git-memmove:
Use memmove in ident_to_git

Merge branch 'tr/maint-format-patch-empty-output'Junio C Hamano Fri, 2 Sep 2011 20:18:22 +0000 (13:18 -0700)

Merge branch 'tr/maint-format-patch-empty-output'

* tr/maint-format-patch-empty-output:
Document negated forms of format-patch --to --cc --add-headers
t4014: "no-add-headers" is actually called "no-add-header"
t4014: invoke format-patch with --stdout where intended
t4014: check for empty files from git format-patch --stdout

Merge branch 'gb/maint-am-stgit-author-to-from-fix'Junio C Hamano Fri, 2 Sep 2011 20:18:11 +0000 (13:18 -0700)

Merge branch 'gb/maint-am-stgit-author-to-from-fix'

* gb/maint-am-stgit-author-to-from-fix:
am: fix stgit patch mangling

Merge branch 'gb/maint-am-patch-format-error-message'Junio C Hamano Fri, 2 Sep 2011 20:18:07 +0000 (13:18 -0700)

Merge branch 'gb/maint-am-patch-format-error-message'

* gb/maint-am-patch-format-error-message:
am: format is in $patch_format, not parse_patch

Conflicts:
git-am.sh

Merge branch 'ms/daemon-timeout-is-in-seconds'Junio C Hamano Fri, 2 Sep 2011 20:17:58 +0000 (13:17 -0700)

Merge branch 'ms/daemon-timeout-is-in-seconds'

* ms/daemon-timeout-is-in-seconds:
git-daemon.txt: specify --timeout in seconds

Merge branch 'bg/t5540-osx-grep'Junio C Hamano Fri, 2 Sep 2011 20:17:50 +0000 (13:17 -0700)

Merge branch 'bg/t5540-osx-grep'

* bg/t5540-osx-grep:
t5540-http-test: shorten grep pattern

Merge branch 'jc/clean-exclude-doc'Junio C Hamano Fri, 2 Sep 2011 20:17:46 +0000 (13:17 -0700)

Merge branch 'jc/clean-exclude-doc'

* jc/clean-exclude-doc:
Documentation: clarify "git clean -e <pattern>"

Merge branch 'mg/maint-notes-C-doc'Junio C Hamano Fri, 2 Sep 2011 20:17:40 +0000 (13:17 -0700)

Merge branch 'mg/maint-notes-C-doc'

* mg/maint-notes-C-doc:
git-notes.txt: clarify -C vs. copy and -F

Merge branch 'fg/submodule-ff-check-before-push'Junio C Hamano Fri, 2 Sep 2011 20:07:58 +0000 (13:07 -0700)

Merge branch 'fg/submodule-ff-check-before-push'

* fg/submodule-ff-check-before-push:
push: Don't push a repository with unpushed submodules

Merge branch 'rc/diff-cleanup-records'Junio C Hamano Fri, 2 Sep 2011 19:07:11 +0000 (12:07 -0700)

Merge branch 'rc/diff-cleanup-records'

* rc/diff-cleanup-records:
xdiff/xprepare: improve O(n*m) performance in xdl_cleanup_records()

Merge branch 'fk/use-kwset-pickaxe-grep-f'Junio C Hamano Fri, 2 Sep 2011 17:00:38 +0000 (10:00 -0700)

Merge branch 'fk/use-kwset-pickaxe-grep-f'

* fk/use-kwset-pickaxe-grep-f:
obstack: Fix portability issues
Use kwset in grep
Use kwset in pickaxe
Adapt the kwset code to Git
Add string search routines from GNU grep
Add obstack.[ch] from EGLIBC 2.10

Merge branch 'en/merge-recursive-2'Junio C Hamano Fri, 2 Sep 2011 17:00:18 +0000 (10:00 -0700)

Merge branch 'en/merge-recursive-2'

* en/merge-recursive-2: (57 commits)
merge-recursive: Don't re-sort a list whose order we depend upon
merge-recursive: Fix virtual merge base for rename/rename(1to2)/add-dest
t6036: criss-cross + rename/rename(1to2)/add-dest + simple modify
merge-recursive: Avoid unnecessary file rewrites
t6022: Additional tests checking for unnecessary updates of files
merge-recursive: Fix spurious 'refusing to lose untracked file...' messages
t6022: Add testcase for spurious "refusing to lose untracked" messages
t3030: fix accidental success in symlink rename
merge-recursive: Fix working copy handling for rename/rename/add/add
merge-recursive: add handling for rename/rename/add-dest/add-dest
merge-recursive: Have conflict_rename_delete reuse modify/delete code
merge-recursive: Make modify/delete handling code reusable
merge-recursive: Consider modifications in rename/rename(2to1) conflicts
merge-recursive: Create function for merging with branchname:file markers
merge-recursive: Record more data needed for merging with dual renames
merge-recursive: Defer rename/rename(2to1) handling until process_entry
merge-recursive: Small cleanups for conflict_rename_rename_1to2
merge-recursive: Fix rename/rename(1to2) resolution for virtual merge base
merge-recursive: Introduce a merge_file convenience function
merge-recursive: Fix modify/delete resolution in the recursive case
...

git-remote-mediawiki: allow push to set MediaWiki metadataMatthieu Moy Thu, 1 Sep 2011 16:54:56 +0000 (18:54 +0200)

git-remote-mediawiki: allow push to set MediaWiki metadata

Push can not set the commit note "mediawiki_revision:" and update the
remote reference. This avoids having to "git pull --rebase" after each
push, and is probably more natural. Make it the default, but let it be
configurable with mediawiki.dumbPush or remote.<remotename>.dumbPush.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Add a remote helper to interact with mediawiki (fetch... Jeremie Nikaes Thu, 1 Sep 2011 16:54:55 +0000 (18:54 +0200)

Add a remote helper to interact with mediawiki (fetch & push)

Implement a gate between git and mediawiki, allowing git users to push
and pull objects from mediawiki just as one would do with a classic git
repository thanks to remote-helpers.

The following packages need to be installed (available on common
repositories):

libmediawiki-api-perl
libdatetime-format-iso8601-perl

Use remote helpers in order to be as transparent as possible to the git
user.

Download Mediawiki revisions through the Mediawiki API and then
fast-import into git.

Mediawiki revision number and git commits are linked thanks to notes
bound to commits.

The import part is done on a refs/mediawiki/<remote> branch before
coming to refs/remote/origin/master (Huge thanks to Jonathan Nieder
for his help)

We use UTF-8 everywhere: use encoding 'utf8'; does most of the job, but
we also read the output of Git commands in UTF-8 with the small helper
run_git, and write to the console (STDERR) in UTF-8. This allows a
seamless use of non-ascii characters in page titles, but hasn't been
tested on non-UTF-8 systems. In particular, UTF-8 encoding for filenames
could raise problems if different file systems handle UTF-8 filenames
differently. A uri_escape of mediawiki filenames could be imaginable, and
is still to be discussed further.

Partial cloning is supported using one of:

git clone -c remote.origin.pages='A_Page Another_Page' mediawiki::http://wikiurl

git clone -c remote.origin.categories='Some_Category' mediawiki::http://wikiurl

git clone -c remote.origin.shallow='True' mediawiki::http://wikiurl

Thanks to notes metadata, it is possible to compare remote and local last
mediawiki revision to warn non-fast forward pushes and "everything
up-to-date" case.

When allowed, push looks for each commit between remotes/origin/master
and HEAD, catches every blob related to these commit and push them in
chronological order. To do so, it uses git rev-list --children HEAD and
travels the tree from remotes/origin/master to HEAD through children. In
other words:

* Shortest path from remotes/origin/master to HEAD
* For each commit encountered, push blobs related to this commit

Signed-off-by: Jérémie Nikaes <jeremie.nikaes@ensimag.imag.fr>
Signed-off-by: Arnaud Lacurie <arnaud.lacurie@ensimag.imag.fr>
Signed-off-by: Claire Fousse <claire.fousse@ensimag.imag.fr>
Signed-off-by: David Amouyal <david.amouyal@ensimag.imag.fr>
Signed-off-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Sylvain Boulmé <sylvain.boulme@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

(short) documentation for the testgit remote helperMatthieu Moy Thu, 1 Sep 2011 16:49:38 +0000 (18:49 +0200)

(short) documentation for the testgit remote helper

While it's not a command meant to be used by actual users (hence, not
mentionned in git(1)), this command is a very precious help for
remote-helpers authors.

The best place for such technical doc is the source code, but users may
not find it without a link in a manpage.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-remote-helpers: explain how import... Matthieu Moy Thu, 1 Sep 2011 16:49:37 +0000 (18:49 +0200)

Documentation/git-remote-helpers: explain how import works with multiple refs

This is important for two reasons:

* when two "import" lines follow each other, only one "done" command
should be issued in the fast-import stream, not one per "import".

* The blank line terminating an import command should not be confused
with the one terminating the sequence of commands.

While we're there, illustrate the corresponding explanation for push
batches with an example.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Acked-by: Sverre Rabbelier <srabbelier@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch: verify we have everything we need before updatin... Junio C Hamano Thu, 1 Sep 2011 22:43:35 +0000 (15:43 -0700)

fetch: verify we have everything we need before updating our ref

The "git fetch" command works in two phases. The remote side tells us what
objects are at the tip of the refs we are fetching from, and transfers the
objects missing from our side. After storing the objects in our repository,
we update our remote tracking branches to point at the updated tips of the
refs.

A broken or malicious remote side could send a perfectly well-formed pack
data during the object transfer phase, but there is no guarantee that the
given data actually fill the gap between the objects we originally had and
the refs we are updating to.

Although this kind of breakage can be caught by running fsck after a
fetch, it is much cheaper to verify that everything that is reachable from
the tips of the refs we fetched are indeed fully connected to the tips of
our current set of refs before we update them.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-list --verify-objectJunio C Hamano Thu, 1 Sep 2011 22:43:34 +0000 (15:43 -0700)

rev-list --verify-object

Often we want to verify everything reachable from a given set of commits
are present in our repository and connected without a gap to the tips of
our refs. We used to do this for this purpose:

$ rev-list --objects $commits_to_be_tested --not --all

Even though this is good enough for catching missing commits and trees,
we show the object name but do not verify their existence, let alone their
well-formedness, for the blob objects at the leaf level.

Add a new "--verify-object" option so that we can catch missing and broken
blobs as well.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

list-objects: pass callback data to show_objects()Junio C Hamano Thu, 1 Sep 2011 22:43:33 +0000 (15:43 -0700)

list-objects: pass callback data to show_objects()

The traverse_commit_list() API takes two callback functions, one to show
commit objects, and the other to show other kinds of objects. Even though
the former has a callback data parameter, so that the callback does not
have to rely on global state, the latter does not.

Give the show_objects() callback the same callback data parameter.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-svn: Teach dcommit --mergeinfo to handle multiple... Bryan Jacobs Wed, 31 Aug 2011 16:48:39 +0000 (12:48 -0400)

git-svn: Teach dcommit --mergeinfo to handle multiple lines

"svn dcommit --mergeinfo" replaces the svn:mergeinfo property in an
upstream SVN repository with the given text. The svn:mergeinfo
property may contain commits originating on multiple branches,
separated by newlines.

Cause space characters in the mergeinfo to be replaced by newlines,
allowing a user to create history representing multiple branches being
merged into one.

Update the corresponding documentation and add a test for the new
functionality.

Signed-off-by: Bryan Jacobs <bjacobs@woti.com>
Acked-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>

git-svn: fix fetch with moved path when using rewriteRootEric Wong Mon, 29 Aug 2011 00:45:44 +0000 (00:45 +0000)

git-svn: fix fetch with moved path when using rewriteRoot

The matching step in commit 3235b7053c45a734c1cdf9b117bda68b7ced29c9
did not properly account for users of the "rewriteRoot"
configuration parameter.

ref: <CANWsHyfHtr0EaJtNsDK9UTcmb_AbLg-1jUA-0uWJ-nEeNosb7w@mail.gmail.com>

Suggested-by: H Krishnan <hetchkay@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>

git-svn: New flag to emulate empty directoriesRay Chen Wed, 20 Jul 2011 22:37:26 +0000 (18:37 -0400)

git-svn: New flag to emulate empty directories

Adds a --preserve-empty-dirs flag to the clone operation that will detect
empty directories in the remote Subversion repository and create placeholder
files in the corresponding local Git directories. This allows "empty"
directories to exist in the history of a Git repository.

Also adds the --placeholder-file flag to control the name of any placeholder
files created. Default value is ".gitignore".

Signed-off-by: Ray Chen <rchen@cs.umd.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>

xdiff/xprepare: initialise xdlclassifier_t cf in xdl_pr... Tay Ray Chuan Wed, 31 Aug 2011 04:48:46 +0000 (12:48 +0800)

xdiff/xprepare: initialise xdlclassifier_t cf in xdl_prepare_env()

Ensure that the xdl_free_classifier() call on xdlclassifier_t cf is safe
even if xdl_init_classifier() isn't called. This may occur in the case
where diff is run with --histogram and a call to, say, xdl_prepare_ctx()
fails.

Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t6030: use $SHELL_PATH to invoke user's preferred shell... Brandon Casey Mon, 29 Aug 2011 20:09:25 +0000 (13:09 -0700)

t6030: use $SHELL_PATH to invoke user's preferred shell instead of bare sh

Some platforms (IRIX, Solaris) provide an ancient /bin/sh which chokes on
modern shell syntax like $(). SHELL_PATH is provided to allow the user to
specify a working sh, let's use it here.

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

bisect: take advantage of gettextln, eval_gettextln.Jon Seymour Tue, 30 Aug 2011 23:09:47 +0000 (09:09 +1000)

bisect: take advantage of gettextln, eval_gettextln.

Signed-off-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'maint'Junio C Hamano Tue, 30 Aug 2011 19:35:51 +0000 (12:35 -0700)

Merge branch 'maint'

* maint:
Documentation: clarify effects of -- <path> arguments

Symlink mergetools scriptlets into valgrind wrappersThomas Rast Tue, 30 Aug 2011 00:47:36 +0000 (02:47 +0200)

Symlink mergetools scriptlets into valgrind wrappers

Since bc7a96a (mergetool--lib: Refactor tools into separate files,
2011-08-18) the mergetools and difftools related tests fail under
--valgrind because the mergetools/* scriptlets are not in the exec
path.

For now, symlink the mergetools subdir into the t/valgrind/bin
directory as a whole, since it does not contain anything of interest
to the valgrind wrappers.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: Fix race condition in delta_base_cacheNicolas Morey-Chaisemartin Tue, 30 Aug 2011 13:45:38 +0000 (15:45 +0200)

grep: Fix race condition in delta_base_cache

When running large git grep (ie: git grep regexp $(git rev-list --all)), glibc error sometimes occur:
*** glibc detected *** git: double free or corruption (!prev): 0x00000000010abdf0 ***

According to gdb the problem originate from release_delta_cash (sha1_file.c:1703)
free(ent->data);

>From my analysis it seems that git grep threads do acquire lock before calling read_sha1_file but not before calling
read_object_with_reference who ends up calling read_sha1_file too.

Adding the lock around read_object_with_reference seems to fix the issue for me.
I've ran git grep about a dozen time and seen no more error while
it usually happened half the time before.

Signed-off-by: Nicolas Morey-Chaisemartin <nicolas@morey-chaisemartin.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Makefile: Improve compiler header dependency checkDavid Aguilar Tue, 30 Aug 2011 08:27:35 +0000 (01:27 -0700)

Makefile: Improve compiler header dependency check

The Makefile enables CHECK_HEADER_DEPENDENCIES when the
compiler supports generating header dependencies.
Make the check use the same flags as the invocation
to avoid a false positive when user-configured compiler
flags contain incompatible options.

For example, without this patch, trying to build universal
binaries on a Mac using CFLAGS='-arch i386 -arch x86_64'
produces:

gcc-4.2: -E, -S, -save-temps and -M options are
not allowed with multiple -arch flags

While at it, remove "sh -c" in the command passed to $(shell);
at this point in the Makefile, SHELL has already been set to
a sensible shell and it is better not to override that.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3903: fix misquoted rev-parse invocationThomas Rast Tue, 30 Aug 2011 00:06:07 +0000 (02:06 +0200)

t3903: fix misquoted rev-parse invocation

!"git ..." hopefully always succeeds because "git ..." is not the name
of any executable. However, that's not what was intended. Unquote
it, and while we're at it, also replace ! with test_must_fail since it
is a call to git.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Acked-by: Jon Seymour <jon.seymour@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: clarify effects of -- <path> argumentsThomas Rast Tue, 30 Aug 2011 09:21:07 +0000 (11:21 +0200)

Documentation: clarify effects of -- <path> arguments

'git log -- <path>' does not "show commits that affect the specified
paths" in a literal sense unless --full-history is given (for example,
a file that only existed on a side branch will turn up no commits at
all!).

Reword it to specify the actual intent of the filtering, and point to
the "History Simplification" section.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/remote-helpers: explain capabilities... Jonathan Nieder Tue, 30 Aug 2011 03:56:08 +0000 (22:56 -0500)

Documentation/remote-helpers: explain capabilities first

The current remote helper documentation is from the perspective of
git, so to speak: it presents a full menu of commands for a person
invoking a remote helper to choose from. In practice, that's less
useful than it could be, since the daunted novice remote-helper author
probably just wanted a list of commands needs to implement to get
started. So preface the command list with an overview of each
capability, its purpose, and what commands it requires.

As a side effect, this makes it a little clearer that git doesn't
choose arbitrary commands to run, even if the remote helper advertises
all capabilities --- instead, there are well defined command sequences
for various tasks.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

strbuf_grow(): maintain nul-termination even for new... Thomas Rast Mon, 29 Aug 2011 21:16:12 +0000 (23:16 +0200)

strbuf_grow(): maintain nul-termination even for new buffer

In the case where sb is initialized to the slopbuf (through
strbuf_init(sb,0) or STRBUF_INIT), strbuf_grow() loses the terminating
nul: it grows the buffer, but gives ALLOC_GROW a NULL source to avoid
it being freed. So ALLOC_GROW does not copy anything to the new
memory area.

This subtly broke the call to strbuf_getline in read_next_command()
[fast-import.c:1855], which goes

strbuf_detach(&command_buf, NULL); # command_buf is now = STRBUF_INIT
stdin_eof = strbuf_getline(&command_buf, stdin, '\n');
if (stdin_eof)
return EOF;

In strbuf_getwholeline, this did

strbuf_grow(sb, 0); # loses nul-termination
if (feof(fp))
return EOF;
strbuf_reset(sb); # this would have nul-terminated!

Valgrind found this because fast-import subsequently uses prefixcmp()
on command_buf.buf, which after the EOF exit contains only
uninitialized memory.

Arguably strbuf_getwholeline is also broken, in that it touches the
buffer before deciding whether to do any work. However, it seems more
futureproof to not let the strbuf API lose the nul-termination by its
own fault.

So make sure that strbuf_grow() puts in a nul even if it has nowhere
to copy it from. This makes strbuf_grow(sb, 0) a semantic no-op as
far as readers of the buffer are concerned.

Also remove the nul-termination added by strbuf_init, which is made
redudant.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Document negated forms of format-patch --to --cc -... Thomas Rast Mon, 29 Aug 2011 20:10:49 +0000 (22:10 +0200)

Document negated forms of format-patch --to --cc --add-headers

The negated forms introduced in c426003 (format-patch: add --no-cc,
--no-to, and --no-add-headers, 2010-03-07) were not documented
anywhere. Add them to the descriptions of the positive forms.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4014: "no-add-headers" is actually called "no-add... Thomas Rast Mon, 29 Aug 2011 20:10:48 +0000 (22:10 +0200)

t4014: "no-add-headers" is actually called "no-add-header"

Since c426003 (format-patch: add --no-cc, --no-to, and
--no-add-headers, 2010-03-07) the tests have checked for an option
called --no-add-headers introduced by letting the user negate
--add-header.

However, the parseopt machinery does not automatically pluralize
anything, so it is in fact called --no-add-header.

Since the option never worked, is not documented anywhere, and
implementing an actual --no-add-headers would lead to silly code
complications, we just adapt the test to the code.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4014: invoke format-patch with --stdout where intendedThomas Rast Mon, 29 Aug 2011 20:10:47 +0000 (22:10 +0200)

t4014: invoke format-patch with --stdout where intended

The test wrote something along the lines of 0001-foo.patch to output,
which of course never contained a signature. Luckily the tested
behaviour is actually present.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t4014: check for empty files from git format-patch... Thomas Rast Mon, 29 Aug 2011 20:10:46 +0000 (22:10 +0200)

t4014: check for empty files from git format-patch --stdout

Most kinds of failure in 'git format-patch --stdout >output' will
result in an empty 'output'. This slips past checks that only verify
absence of output, such as the '! grep ...' that are quite prevalent
in t4014.

Introduce a helper check_patch() that checks that at least From, Date
and Subject are present, thus making sure it looks vaguely like a
patch (or cover letter) email. Then insert calls to it in all tests
that do have positive checks for content.

This makes two of the tests fail. Mark them as such; they'll be
fixed in a moment.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Use memmove in ident_to_gitThomas Rast Mon, 29 Aug 2011 20:06:04 +0000 (22:06 +0200)

Use memmove in ident_to_git

convert_to_git sets src=dst->buf if any of the preceding conversions
actually did any work. Thus in ident_to_git we have to use memmove
instead of memcpy as far as src->dst copying is concerned.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff-index: pass pathspec down to unpack-trees machineryJunio C Hamano Mon, 29 Aug 2011 20:34:08 +0000 (13:34 -0700)

diff-index: pass pathspec down to unpack-trees machinery

And finally, pass the pathspec down through unpack_trees() to traverse_trees()
callchain.

Before and after applying this series, looking for changes in the kernel
repository with a fairly narrow pathspec becomes somewhat faster.

(without patch)
$ /usr/bin/time git diff --raw v2.6.27 -- net/ipv6 >/dev/null
0.48user 0.05system 0:00.53elapsed 100%CPU (0avgtext+0avgdata 163296maxresident)k
0inputs+952outputs (0major+11163minor)pagefaults 0swaps

(with patch)
$ /usr/bin/time git diff --raw v2.6.27 -- net/ipv6 >/dev/null
0.01user 0.00system 0:00.02elapsed 104%CPU (0avgtext+0avgdata 43856maxresident)k
0inputs+24outputs (0major+3688minor)pagefaults 0swaps

Signed-off-by: Junio C Hamano <gitster@pobox.com>

unpack-trees: allow pruning with pathspecJunio C Hamano Mon, 29 Aug 2011 19:31:06 +0000 (12:31 -0700)

unpack-trees: allow pruning with pathspec

Use the pathspec pruning of traverse_trees() from unpack_trees(). Again,
the unpack_trees() machinery is primarily meant for merging two (or more)
trees, and because a merge is a full tree operation, it didn't support any
pruning with pathspec, and this codepath probably should not be enabled
while running a merge, but the caller in diff-lib.c::diff_cache() should
be able to take advantage of it.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

traverse_trees(): allow pruning with pathspecJunio C Hamano Mon, 29 Aug 2011 19:26:05 +0000 (12:26 -0700)

traverse_trees(): allow pruning with pathspec

The traverse_trees() machinery is primarily meant for merging two (or
more) trees, and because a merge is a full tree operation, it doesn't
support any pruning with pathspec.

Since d1f2d7e (Make run_diff_index() use unpack_trees(), not read_tree(),
2008-01-19), however, we use unpack_trees() to traverse_trees() callchain
to perform "diff-index", which could waste a lot of work traversing trees
outside the user-supplied pathspec, only to discard at the blob comparison
level in diff-lib.c::oneway_diff() which is way too late.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

am: preliminary support for hg patchesGiuseppe Bilotta Mon, 29 Aug 2011 16:44:06 +0000 (18:44 +0200)

am: preliminary support for hg patches

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

am: fix stgit patch manglingGiuseppe Bilotta Mon, 29 Aug 2011 16:44:07 +0000 (18:44 +0200)

am: fix stgit patch mangling

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-p4: simple branch tests editsPete Wyckoff Mon, 29 Aug 2011 09:32:23 +0000 (10:32 +0100)

git-p4: simple branch tests edits

More review comments.

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>

am: format is in $patch_format, not parse_patchGiuseppe Bilotta Mon, 29 Aug 2011 15:22:06 +0000 (17:22 +0200)

am: format is in $patch_format, not parse_patch

The error message given when the patch format was not recognized was
wrong, since the variable checked was $parse_patch rather than
$patch_format. Fix by checking the non-emptyness of the correct
variable.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5540-http-test: shorten grep patternBrian Gernhardt Mon, 29 Aug 2011 06:42:21 +0000 (02:42 -0400)

t5540-http-test: shorten grep pattern

On OS X, the grep pattern

"\"OP .*/objects/$x2/X38_X40 HTTP/[.0-9]*\" 20[0-9] "

is too long ($x38 and $x40 represent 38 and 40 copies of [0-9a-f]) for
grep to handle. In order to still be able to match this, use the sed
invocation to replace what we're looking for with a token.

Improved-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation: clarify "git clean -e <pattern>"Junio C Hamano Thu, 25 Aug 2011 18:29:57 +0000 (11:29 -0700)

Documentation: clarify "git clean -e <pattern>"

The current explanation of -e can be misread as allowing the user to say

I know 'git clean -XYZ' (substitute -XYZ with any option and/or
parameter) will remove paths A, B, and C, and I want them all removed
except for paths matching this pattern by adding '-e C' to the same
command line, i.e. 'git clean -e C -XYZ'.

But that is not what this option does. It augments the set of ignore rules
from the command line, just like the same "-e <pattern>" argument does
with the "ls-files" command (the user could probably pass "-e \!C" to tell
the command to clean everything the command would normally remove, except
for C). Also error out when both -x and -e are given with an explanation of
what -e means---it is a symptom of misunderstanding what -e does.

It also fixes small style nit in the parameter to add_exclude() call. The
current code only works because EXC_CMDL happens to be defined as 0.

Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: allow pattern argumentsMichael J Gruber Sun, 28 Aug 2011 14:54:32 +0000 (16:54 +0200)

branch: allow pattern arguments

Allow pattern arguments for the list mode just like for git tag -l.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

branch: introduce --list optionMichael J Gruber Sun, 28 Aug 2011 14:54:31 +0000 (16:54 +0200)

branch: introduce --list option

Currently, there is no way to invoke the list mode explicitly, without
giving -v to force verbose output.

Introduce a --list option which invokes the list mode. This will be
beneficial for invoking list mode with pattern matching, which otherwise
would be interpreted as branch creation.

Along with --list, test also combinations of existing options.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-branch: introduce missing long forms for the optionsMichael J Gruber Sun, 28 Aug 2011 14:54:30 +0000 (16:54 +0200)

git-branch: introduce missing long forms for the options

Long forms are better to memorize and more reliably uniform across
commands.

Names follow precedents, e.g. "git log --remotes".

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-tag: introduce long forms for the optionsMichael J Gruber Sun, 28 Aug 2011 14:54:29 +0000 (16:54 +0200)

git-tag: introduce long forms for the options

Long forms are better to memorize and more reliably uniform across
commands.

Design notes:

-u,--local-user is named following the analogous gnupg option.

-l,--list is not an argument taking option but a mode switch.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t3005: do not assume a particular order of stdout and... Johannes Sixt Sun, 28 Aug 2011 07:34:56 +0000 (09:34 +0200)

t3005: do not assume a particular order of stdout and stderr of git-ls-files

There is no guarantee that stderr is flushed before stdout when both
channels are redirected to a file. Check the channels using independent
files.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

obstack: Fix portability issuesFredrik Kuivinen Sun, 28 Aug 2011 20:08:46 +0000 (22:08 +0200)

obstack: Fix portability issues

i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1, SunOS 5.10, and possibly
others do not have exit.h and exitfail.h. Remove the use of these in
obstack.c.

The __block variable was renamed to block to avoid a gcc error:

compat/obstack.h:190: error: __block attribute can be specified on variables only

Initial-patch-by: David Aguilar <davvid@gmail.com>
Reported-by: Brian Gernhardt <brian@gernhardtsoftware.com>
Signed-off-by: Fredrik Kuivinen <frekui@gmail.com>
Acked-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.7Junio C Hamano Mon, 29 Aug 2011 04:49:35 +0000 (21:49 -0700)

Update draft release notes to 1.7.7

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'nd/decorate-grafts'Junio C Hamano Mon, 29 Aug 2011 04:22:58 +0000 (21:22 -0700)

Merge branch 'nd/decorate-grafts'

* nd/decorate-grafts:
log: Do not decorate replacements with --no-replace-objects
log: decorate "replaced" on to replaced commits
log: decorate grafted commits with "grafted"
Move write_shallow_commits to fetch-pack.c
Add for_each_commit_graft() to iterate all grafts
decoration: do not mis-decorate refs with same prefix

Merge branch 'nd/maint-clone-gitdir'Junio C Hamano Mon, 29 Aug 2011 04:20:28 +0000 (21:20 -0700)

Merge branch 'nd/maint-clone-gitdir'

* nd/maint-clone-gitdir:
clone: allow to clone from .git file
read_gitfile_gently(): rename misnamed function to read_gitfile()