gitweb.git
invalidate_ref_cache(): take the submodule as parameterMichael Haggerty Mon, 17 Oct 2011 02:38:06 +0000 (04:38 +0200)

invalidate_ref_cache(): take the submodule as parameter

Instead of invalidating the ref cache on an all-or-nothing basis,
invalidate the cache for a specific submodule.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

invalidate_ref_cache(): rename function from invalidate... Michael Haggerty Mon, 17 Oct 2011 02:38:05 +0000 (04:38 +0200)

invalidate_ref_cache(): rename function from invalidate_cached_refs()

It is the cache that is being invalidated, not the references, and the
new name makes this unambiguous. Rename other items analogously:

* struct cached_refs -> struct ref_cache
* cached_refs (the variable) -> ref_cache
* clear_cached_refs() -> clear_ref_cache()
* create_cached_refs() -> create_ref_cache()
* get_cached_refs() -> get_ref_cache()

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Update draft release notes to 1.7.8Junio C Hamano Mon, 10 Oct 2011 23:14:59 +0000 (16:14 -0700)

Update draft release notes to 1.7.8

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

Merge branch 'dm/tree-walk'Junio C Hamano Mon, 10 Oct 2011 22:56:20 +0000 (15:56 -0700)

Merge branch 'dm/tree-walk'

* dm/tree-walk:
tree-walk: micro-optimization in tree_entry_interesting
tree-walk: drop unused parameter from match_dir_prefix

Merge branch 'ps/gitweb-js-with-lineno'Junio C Hamano Mon, 10 Oct 2011 22:56:20 +0000 (15:56 -0700)

Merge branch 'ps/gitweb-js-with-lineno'

* ps/gitweb-js-with-lineno:
gitweb: Fix links to lines in blobs when javascript-actions are enabled

Merge branch 'mh/maint-notes-merge-pathbuf-fix'Junio C Hamano Mon, 10 Oct 2011 22:56:20 +0000 (15:56 -0700)

Merge branch 'mh/maint-notes-merge-pathbuf-fix'

* mh/maint-notes-merge-pathbuf-fix:
notes_merge_commit(): do not pass temporary buffer to other function

Merge branch 'nd/sparse-doc'Junio C Hamano Mon, 10 Oct 2011 22:56:20 +0000 (15:56 -0700)

Merge branch 'nd/sparse-doc'

* nd/sparse-doc:
git-read-tree.txt: update sparse checkout examples

Merge branch 'jp/get-ref-dir-unsorted'Junio C Hamano Mon, 10 Oct 2011 22:56:19 +0000 (15:56 -0700)

Merge branch 'jp/get-ref-dir-unsorted'

* jp/get-ref-dir-unsorted:
refs.c: free duplicate entries in the ref array instead of leaking them
refs.c: abort ref search if ref array is empty
refs.c: ensure struct whose member may be passed to realloc is initialized
refs: Use binary search to lookup refs faster
Don't sort ref_list too early

Conflicts:
refs.c

Merge branch 'mh/check-ref-format-3'Junio C Hamano Mon, 10 Oct 2011 22:56:18 +0000 (15:56 -0700)

Merge branch 'mh/check-ref-format-3'

* mh/check-ref-format-3: (23 commits)
add_ref(): verify that the refname is formatted correctly
resolve_ref(): expand documentation
resolve_ref(): also treat a too-long SHA1 as invalid
resolve_ref(): emit warnings for improperly-formatted references
resolve_ref(): verify that the input refname has the right format
remote: avoid passing NULL to read_ref()
remote: use xstrdup() instead of strdup()
resolve_ref(): do not follow incorrectly-formatted symbolic refs
resolve_ref(): extract a function get_packed_ref()
resolve_ref(): turn buffer into a proper string as soon as possible
resolve_ref(): only follow a symlink that contains a valid, normalized refname
resolve_ref(): use prefixcmp()
resolve_ref(): explicitly fail if a symlink is not readable
Change check_refname_format() to reject unnormalized refnames
Inline function refname_format_print()
Make collapse_slashes() allocate memory for its result
Do not allow ".lock" at the end of any refname component
Refactor check_refname_format()
Change check_ref_format() to take a flags argument
Change bad_ref_char() to return a boolean value
...

Merge branch 'mh/iterate-refs'Junio C Hamano Mon, 10 Oct 2011 22:56:18 +0000 (15:56 -0700)

Merge branch 'mh/iterate-refs'

* mh/iterate-refs:
refs.c: make create_cached_refs() static
Retain caches of submodule refs
Store the submodule name in struct cached_refs
Allocate cached_refs objects dynamically
Change the signature of read_packed_refs()
Access reference caches only through new function get_cached_refs()
Extract a function clear_cached_refs()

Merge branch 'jm/mergetool-pathspec'Junio C Hamano Mon, 10 Oct 2011 22:56:18 +0000 (15:56 -0700)

Merge branch 'jm/mergetool-pathspec'

* jm/mergetool-pathspec:
mergetool: no longer need to save standard input
mergetool: Use args as pathspec to unmerged files

Merge branch 'jc/maint-diffstat-numstat-context'Junio C Hamano Mon, 10 Oct 2011 22:56:18 +0000 (15:56 -0700)

Merge branch 'jc/maint-diffstat-numstat-context'

* jc/maint-diffstat-numstat-context:
diff: teach --stat/--numstat to honor -U$num

Merge branch 'mz/remote-rename'Junio C Hamano Mon, 10 Oct 2011 22:56:17 +0000 (15:56 -0700)

Merge branch 'mz/remote-rename'

* mz/remote-rename:
remote: only update remote-tracking branch if updating refspec
remote rename: warn when refspec was not updated
remote: "rename o foo" should not rename ref "origin/bar"
remote: write correct fetch spec when renaming remote 'remote'

Merge branch 'cb/common-prefix-unification'Junio C Hamano Mon, 10 Oct 2011 22:56:17 +0000 (15:56 -0700)

Merge branch 'cb/common-prefix-unification'

* cb/common-prefix-unification:
rename pathspec_prefix() to common_prefix() and move to dir.[ch]
consolidate pathspec_prefix and common_prefix
remove prefix argument from pathspec_prefix

Merge branch 'jn/maint-http-error-message'Junio C Hamano Mon, 10 Oct 2011 22:56:17 +0000 (15:56 -0700)

Merge branch 'jn/maint-http-error-message'

* jn/maint-http-error-message:
http: avoid empty error messages for some curl errors
http: remove extra newline in error message

Merge branch 'hv/submodule-update-none'Junio C Hamano Mon, 10 Oct 2011 22:56:17 +0000 (15:56 -0700)

Merge branch 'hv/submodule-update-none'

* hv/submodule-update-none:
add update 'none' flag to disable update of submodule by default
submodule: move update configuration variable further up

Merge branch 'fg/submodule-git-file-git-dir'Junio C Hamano Mon, 10 Oct 2011 22:56:16 +0000 (15:56 -0700)

Merge branch 'fg/submodule-git-file-git-dir'

* fg/submodule-git-file-git-dir:
Move git-dir for submodules
rev-parse: add option --resolve-git-dir <path>

Conflicts:
cache.h
git-submodule.sh

refs.c: free duplicate entries in the ref array instead... Brandon Casey Sat, 8 Oct 2011 03:20:22 +0000 (22:20 -0500)

refs.c: free duplicate entries in the ref array instead of leaking them

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

refs.c: abort ref search if ref array is emptyBrandon Casey Sat, 8 Oct 2011 03:20:21 +0000 (22:20 -0500)

refs.c: abort ref search if ref array is empty

The bsearch() implementation on IRIX 6.5 segfaults if it is passed NULL
for the base array argument even if number-of-elements is zero. So, let's
work around it by detecting an empty array and aborting early.

This is a useful optimization in its own right anyway, since we avoid a
useless allocation and initialization of the ref_entry when the ref array
is empty.

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

refs.c: ensure struct whose member may be passed to... Brandon Casey Sat, 8 Oct 2011 03:20:20 +0000 (22:20 -0500)

refs.c: ensure struct whose member may be passed to realloc is initialized

The variable "refs" is allocated on the stack but is not initialized. It
is passed to read_packed_refs(), and its struct members may eventually be
passed to add_ref() and ALLOC_GROW(). Since the structure has not been
initialized, its members may contain random non-zero values. So let's
initialize it.

The call sequence looks something like this:

resolve_gitlink_packed_ref(...) {

struct cached_refs refs;
...
read_packed_refs(f, &refs);
...
}

read_packed_refs(FILE*, struct cached_refs *cached_refs) {
...
add_ref(name, sha1, flag, &cached_refs->packed, &last);
...
}

add_ref(..., struct ref_array *refs, struct ref_entry **) {
...
ALLOC_GROW(refs->refs, refs->nr + 1, refs->alloc);
}

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

Fix some "variable might be used uninitialized" warningsRamsay Jones Sun, 11 Sep 2011 19:39:32 +0000 (20:39 +0100)

Fix some "variable might be used uninitialized" warnings

In particular, gcc complains as follows:

CC tree-walk.o
tree-walk.c: In function `traverse_trees':
tree-walk.c:347: warning: 'e' might be used uninitialized in this \
function

CC builtin/revert.o
builtin/revert.c: In function `verify_opt_mutually_compatible':
builtin/revert.c:113: warning: 'opt2' might be used uninitialized in \
this function

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

Makefile: fix permissions of mergetools/ checked out... Junio C Hamano Sun, 9 Oct 2011 19:59:44 +0000 (12:59 -0700)

Makefile: fix permissions of mergetools/ checked out with permissive umask

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

Makefile: fix permissions of mergetools/ checked out... Jonathan Nieder Sun, 9 Oct 2011 09:17:07 +0000 (04:17 -0500)

Makefile: fix permissions of mergetools/ checked out with permissive umask

Ever since mergetool--lib was split into multiple files in
v1.7.7-rc0~3^2~1 (2011-08-18), the Makefile takes care to reset umask
and use tar --no-owner when installing merge tool definitions to
$(gitexecdir)/mergetools/. Unfortunately it does not take into
account the possibility that the permission bits of the files being
copied might already be wrong.

Rather than fixing the "tar" incantation and making it even more
complicated, let's just use the "install" utility. This only means
losing the ability to install executables and subdirectories of
mergetools/, which wasn't used.

Noticed by installing from a copy of git checked out with umask 002.
Compare v1.6.0.3~81^2 (Fix permission bits on sources checked out with
an overtight umask, 2008-08-21).

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

add_ref(): verify that the refname is formatted correctlyMichael Haggerty Thu, 15 Sep 2011 21:10:43 +0000 (23:10 +0200)

add_ref(): verify that the refname is formatted correctly

In add_ref(), verify that the refname is formatted correctly before
adding it to the ref_list. Here we have to allow refname components
that start with ".", since (for example) the remote protocol uses
synthetic reference name ".have". So add a new REFNAME_DOT_COMPONENT
flag that can be passed to check_refname_format() to allow leading
dots.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): expand documentationMichael Haggerty Thu, 15 Sep 2011 21:10:42 +0000 (23:10 +0200)

resolve_ref(): expand documentation

Record information about resolve_ref(), hard-won via reverse
engineering, in a comment for future spelunkers.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): also treat a too-long SHA1 as invalidMichael Haggerty Thu, 15 Sep 2011 21:10:41 +0000 (23:10 +0200)

resolve_ref(): also treat a too-long SHA1 as invalid

If the SHA1 in a reference file is not terminated by a space or
end-of-file, consider it malformed and emit a warning.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): emit warnings for improperly-formatted... Michael Haggerty Thu, 15 Sep 2011 21:10:40 +0000 (23:10 +0200)

resolve_ref(): emit warnings for improperly-formatted references

While resolving references, if a reference is found that is in an
unrecognized format, emit a warning (and then fail, as before).
Wouldn't *you* want to know?

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): verify that the input refname has the... Michael Haggerty Thu, 15 Sep 2011 21:10:39 +0000 (23:10 +0200)

resolve_ref(): verify that the input refname has the right format

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: avoid passing NULL to read_ref()Michael Haggerty Thu, 15 Sep 2011 21:10:38 +0000 (23:10 +0200)

remote: avoid passing NULL to read_ref()

read_ref() can (and in test t5800, actually *does*) return NULL.
Don't pass the NULL along to read_ref(). Coincidentally, this mistake
didn't make resolve_ref() blow up, but upcoming changes to
resolve_ref() will make it less forgiving.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

remote: use xstrdup() instead of strdup()Michael Haggerty Thu, 15 Sep 2011 21:10:37 +0000 (23:10 +0200)

remote: use xstrdup() instead of strdup()

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): do not follow incorrectly-formatted... Michael Haggerty Thu, 15 Sep 2011 21:10:36 +0000 (23:10 +0200)

resolve_ref(): do not follow incorrectly-formatted symbolic refs

Emit a warning and fail if a symbolic reference refers to an
incorrectly-formatted refname.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): extract a function get_packed_ref()Michael Haggerty Thu, 15 Sep 2011 21:10:35 +0000 (23:10 +0200)

resolve_ref(): extract a function get_packed_ref()

Making it a function and giving it a name makes the code clearer. I
also have a strong suspicion that the function will find other uses in
the future.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): turn buffer into a proper string as... Michael Haggerty Thu, 15 Sep 2011 21:10:34 +0000 (23:10 +0200)

resolve_ref(): turn buffer into a proper string as soon as possible

Immediately strip off trailing spaces and null-terminate the string
holding the contents of the reference file; this allows the use of
string functions and avoids the need to keep separate track of the
string's length. (get_sha1_hex() fails automatically if the string is
too short.)

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): only follow a symlink that contains... Michael Haggerty Thu, 15 Sep 2011 21:10:33 +0000 (23:10 +0200)

resolve_ref(): only follow a symlink that contains a valid, normalized refname

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): use prefixcmp()Michael Haggerty Thu, 15 Sep 2011 21:10:32 +0000 (23:10 +0200)

resolve_ref(): use prefixcmp()

Terminate the link content string one step earlier, allowing
prefixcmp() to be used instead of the less clear memcmp().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

resolve_ref(): explicitly fail if a symlink is not... Michael Haggerty Thu, 15 Sep 2011 21:10:31 +0000 (23:10 +0200)

resolve_ref(): explicitly fail if a symlink is not readable

Previously the failure came later, after a few steps in which the
length was treated like the actual length of a string. Even though
the old code gave the same answers, it was somewhat misleading.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Change check_refname_format() to reject unnormalized... Michael Haggerty Thu, 15 Sep 2011 21:10:30 +0000 (23:10 +0200)

Change check_refname_format() to reject unnormalized refnames

Since much of the infrastructure does not work correctly with
unnormalized refnames, change check_refname_format() to reject them.

Similarly, change "git check-ref-format" to reject unnormalized
refnames by default. But add an option --normalize, which causes "git
check-ref-format" to normalize the refname before checking its format,
and print the normalized refname. This is exactly the behavior of the
old --print option, which is retained but deprecated.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Inline function refname_format_print()Michael Haggerty Thu, 15 Sep 2011 21:10:29 +0000 (23:10 +0200)

Inline function refname_format_print()

Soon we will make printing independent of collapsing.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Make collapse_slashes() allocate memory for its resultMichael Haggerty Thu, 15 Sep 2011 21:10:28 +0000 (23:10 +0200)

Make collapse_slashes() allocate memory for its result

This will make upcoming changes a tiny bit easier.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Do not allow ".lock" at the end of any refname componentMichael Haggerty Thu, 15 Sep 2011 21:10:27 +0000 (23:10 +0200)

Do not allow ".lock" at the end of any refname component

Allowing any refname component to end with ".lock" is looking for
trouble; for example,

$ git br foo.lock/bar
$ git br foo
fatal: Unable to create '[...]/.git/refs/heads/foo.lock': File exists.

Therefore, do not allow any refname component to end with ".lock".

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Refactor check_refname_format()Michael Haggerty Thu, 15 Sep 2011 21:10:26 +0000 (23:10 +0200)

Refactor check_refname_format()

Among other things, extract a function check_refname_component().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Change check_ref_format() to take a flags argumentMichael Haggerty Thu, 15 Sep 2011 21:10:25 +0000 (23:10 +0200)

Change check_ref_format() to take a flags argument

Change check_ref_format() to take a flags argument that indicates what
is acceptable in the reference name (analogous to "git
check-ref-format"'s "--allow-onelevel" and "--refspec-pattern"). This
is more convenient for callers and also fixes a failure in the test
suite (and likely elsewhere in the code) by enabling "onelevel" and
"refspec-pattern" to be allowed independently of each other.

Also rename check_ref_format() to check_refname_format() to make it
obvious that it deals with refnames rather than references themselves.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Change bad_ref_char() to return a boolean valueMichael Haggerty Thu, 15 Sep 2011 21:10:24 +0000 (23:10 +0200)

Change bad_ref_char() to return a boolean value

Previously most bad characters were indicated by returning 1, but "*"
was special-cased to return 2 instead of 1. One caller examined the
return value to see whether the special case occurred.

But it is easier (to document and understand) for bad_ref_char()
simply to return a boolean value, treating "*" like any other bad
character. Special-case the handling of "*" (which only occurs in
very specific circumstances) at the caller. The resulting calling
code thereby also becomes more transparent.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git check-ref-format: add options --allow-onelevel... Michael Haggerty Thu, 15 Sep 2011 21:10:23 +0000 (23:10 +0200)

git check-ref-format: add options --allow-onelevel and --refspec-pattern

Also add tests of the new options. (Actually, one big reason to add
the new options is to make it easy to test check_ref_format(), though
the options should also be useful to other scripts.)

Interpret the result of check_ref_format() based on which types of
refnames are allowed. However, because check_ref_format() can only
return a single value, one test case is still broken. Specifically,
the case "git check-ref-format --onelevel '*'" incorrectly succeeds
because check_ref_format() returns CHECK_REF_FORMAT_ONELEVEL for this
refname even though the refname is also CHECK_REF_FORMAT_WILDCARD.
The type of check that leads to this failure is used elsewhere in
"real" code and could lead to bugs; it will be fixed over the next few
commits.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t1402: add some more testsMichael Haggerty Thu, 15 Sep 2011 21:10:22 +0000 (23:10 +0200)

t1402: add some more tests

The new tests reflect the status quo. Soon the rule for "*.lock" in
refname components will be tightened up.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

get_sha1_hex(): do not read past a NUL characterMichael Haggerty Fri, 23 Sep 2011 13:38:36 +0000 (15:38 +0200)

get_sha1_hex(): do not read past a NUL character

Previously, get_sha1_hex() would read one character past the end of a
null-terminated string whose strlen was an even number less than 40.
Although the function correctly returned -1 in these cases, the extra
memory access might have been to uninitialized (or even, conceivably,
unallocated) memory.

Add a check to avoid reading past the end of a string.

This problem was discovered by Thomas Rast <trast@student.ethz.ch>
using valgrind.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Post 1.7.7 first waveJunio C Hamano Wed, 5 Oct 2011 19:54:35 +0000 (12:54 -0700)

Post 1.7.7 first wave

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

Merge branch 'mm/mediawiki-as-a-remote'Junio C Hamano Wed, 5 Oct 2011 19:36:27 +0000 (12:36 -0700)

Merge branch 'mm/mediawiki-as-a-remote'

* mm/mediawiki-as-a-remote:
git-remote-mediawiki: allow a domain to be set for authentication
git-remote-mediawiki: obey advice.pushNonFastForward
git-remote-mediawiki: set 'basetimestamp' to let the wiki handle conflicts
git-remote-mediawiki: trivial fixes
git-remote-mediawiki: allow push to set MediaWiki metadata
Add a remote helper to interact with mediawiki (fetch & push)

Merge branch 'js/check-attr-cached'Junio C Hamano Wed, 5 Oct 2011 19:36:27 +0000 (12:36 -0700)

Merge branch 'js/check-attr-cached'

* js/check-attr-cached:
t0003: remove extra whitespaces
Teach '--cached' option to check-attr

Merge branch 'rj/maint-t9159-svn-rev-notation'Junio C Hamano Wed, 5 Oct 2011 19:36:26 +0000 (12:36 -0700)

Merge branch 'rj/maint-t9159-svn-rev-notation'

* rj/maint-t9159-svn-rev-notation:
t9159-*.sh: skip for mergeinfo test for svn <= 1.4

Merge branch 'cn/eradicate-working-copy'Junio C Hamano Wed, 5 Oct 2011 19:36:26 +0000 (12:36 -0700)

Merge branch 'cn/eradicate-working-copy'

* cn/eradicate-working-copy:
Remove 'working copy' from the documentation and C code

Merge branch 'jn/gitweb-highlite-sanitise'Junio C Hamano Wed, 5 Oct 2011 19:36:26 +0000 (12:36 -0700)

Merge branch 'jn/gitweb-highlite-sanitise'

* jn/gitweb-highlite-sanitise:
gitweb: Strip non-printable characters from syntax highlighter output

Merge branch 'jc/ls-remote-short-help'Junio C Hamano Wed, 5 Oct 2011 19:36:26 +0000 (12:36 -0700)

Merge branch 'jc/ls-remote-short-help'

* jc/ls-remote-short-help:
ls-remote: a lone "-h" is asking for help

Merge branch 'sn/doc-update-index-assume-unchanged'Junio C Hamano Wed, 5 Oct 2011 19:36:25 +0000 (12:36 -0700)

Merge branch 'sn/doc-update-index-assume-unchanged'

* sn/doc-update-index-assume-unchanged:
Documentation/git-update-index: refer to 'ls-files'

Merge branch 'mg/maint-doc-sparse-checkout'Junio C Hamano Wed, 5 Oct 2011 19:36:25 +0000 (12:36 -0700)

Merge branch 'mg/maint-doc-sparse-checkout'

* mg/maint-doc-sparse-checkout:
git-read-tree.txt: correct sparse-checkout and skip-worktree description
git-read-tree.txt: language and typography fixes
unpack-trees: print "Aborting" to stderr

Merge branch 'jk/argv-array'Junio C Hamano Wed, 5 Oct 2011 19:36:24 +0000 (12:36 -0700)

Merge branch 'jk/argv-array'

* jk/argv-array:
run_hook: use argv_array API
checkout: use argv_array API
bisect: use argv_array API
quote: provide sq_dequote_to_argv_array
refactor argv_array into generic code
quote.h: fix bogus comment
add sha1_array API docs

Merge branch 'tr/doc-note-rewrite'Junio C Hamano Wed, 5 Oct 2011 19:36:24 +0000 (12:36 -0700)

Merge branch 'tr/doc-note-rewrite'

* tr/doc-note-rewrite:
Documentation: basic configuration of notes.rewriteRef

Merge branch 'mg/branch-list'Junio C Hamano Wed, 5 Oct 2011 19:36:23 +0000 (12:36 -0700)

Merge branch 'mg/branch-list'

* mg/branch-list:
t3200: clean up checks for file existence
branch: -v does not automatically imply --list
branch: allow pattern arguments
branch: introduce --list option
git-branch: introduce missing long forms for the options
git-tag: introduce long forms for the options
t6040: test branch -vv

Conflicts:
Documentation/git-tag.txt
t/t3200-branch.sh

Merge branch 'cb/send-email-help'Junio C Hamano Wed, 5 Oct 2011 19:36:23 +0000 (12:36 -0700)

Merge branch 'cb/send-email-help'

* cb/send-email-help:
send-email: add option -h

Merge branch 'fk/use-kwset-pickaxe-grep-f'Junio C Hamano Wed, 5 Oct 2011 19:36:22 +0000 (12:36 -0700)

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

* fk/use-kwset-pickaxe-grep-f:
obstack.c: Fix some sparse warnings
sparse: Fix an "Using plain integer as NULL pointer" warning

Merge branch 'jk/for-each-ref'Junio C Hamano Wed, 5 Oct 2011 19:36:22 +0000 (12:36 -0700)

Merge branch 'jk/for-each-ref'

* jk/for-each-ref:
for-each-ref: add split message parts to %(contents:*).
for-each-ref: handle multiline subjects like --pretty
for-each-ref: refactor subject and body placeholder parsing
t6300: add more body-parsing tests
t7004: factor out gpg setup

Merge branch 'wh/normalize-alt-odb-path'Junio C Hamano Wed, 5 Oct 2011 19:36:22 +0000 (12:36 -0700)

Merge branch 'wh/normalize-alt-odb-path'

* wh/normalize-alt-odb-path:
sha1_file: normalize alt_odb path before comparing and storing

Merge branch 'jc/run-receive-hook-cleanup'Junio C Hamano Wed, 5 Oct 2011 19:36:22 +0000 (12:36 -0700)

Merge branch 'jc/run-receive-hook-cleanup'

* jc/run-receive-hook-cleanup:
refactor run_receive_hook()

Merge branch 'hl/iso8601-more-zone-formats'Junio C Hamano Wed, 5 Oct 2011 19:36:22 +0000 (12:36 -0700)

Merge branch 'hl/iso8601-more-zone-formats'

* hl/iso8601-more-zone-formats:
date.c: Support iso8601 timezone formats

Merge branch 'rj/quietly-create-dep-dir'Junio C Hamano Wed, 5 Oct 2011 19:36:21 +0000 (12:36 -0700)

Merge branch 'rj/quietly-create-dep-dir'

* rj/quietly-create-dep-dir:
Makefile: Make dependency directory creation less noisy

Merge branch 'jc/receive-verify'Junio C Hamano Wed, 5 Oct 2011 19:36:21 +0000 (12:36 -0700)

Merge branch 'jc/receive-verify'

* jc/receive-verify:
receive-pack: check connectivity before concluding "git push"
check_everything_connected(): libify
check_everything_connected(): refactor to use an iterator
fetch: verify we have everything we need before updating our ref

Conflicts:
builtin/fetch.c

Merge branch 'jc/fetch-verify'Junio C Hamano Wed, 5 Oct 2011 19:36:20 +0000 (12:36 -0700)

Merge branch 'jc/fetch-verify'

* jc/fetch-verify:
fetch: verify we have everything we need before updating our ref
rev-list --verify-object
list-objects: pass callback data to show_objects()

Merge branch 'jc/fetch-pack-fsck-objects'Junio C Hamano Wed, 5 Oct 2011 19:36:20 +0000 (12:36 -0700)

Merge branch 'jc/fetch-pack-fsck-objects'

* jc/fetch-pack-fsck-objects:
test: fetch/receive with fsckobjects
transfer.fsckobjects: unify fetch/receive.fsckobjects
fetch.fsckobjects: verify downloaded objects

Conflicts:
Documentation/config.txt
builtin/fetch-pack.c

Merge branch 'jc/traverse-commit-list'Junio C Hamano Wed, 5 Oct 2011 19:36:19 +0000 (12:36 -0700)

Merge branch 'jc/traverse-commit-list'

* jc/traverse-commit-list:
revision.c: update show_object_with_name() without using malloc()
revision.c: add show_object_with_name() helper function
rev-list: fix finish_object() call

Merge branch 'rr/revert-cherry-pick-continue'Junio C Hamano Wed, 5 Oct 2011 19:36:19 +0000 (12:36 -0700)

Merge branch 'rr/revert-cherry-pick-continue'

* rr/revert-cherry-pick-continue:
builtin/revert.c: make commit_list_append() static
revert: Propagate errors upwards from do_pick_commit
revert: Introduce --continue to continue the operation
revert: Don't implicitly stomp pending sequencer operation
revert: Remove sequencer state when no commits are pending
reset: Make reset remove the sequencer state
revert: Introduce --reset to remove sequencer state
revert: Make pick_commits functionally act on a commit list
revert: Save command-line options for continuing operation
revert: Save data for continuing after conflict resolution
revert: Don't create invalid replay_opts in parse_args
revert: Separate cmdline parsing from functional code
revert: Introduce struct to keep command-line options
revert: Eliminate global "commit" variable
revert: Rename no_replay to record_origin
revert: Don't check lone argument in get_encoding
revert: Simplify and inline add_message_to_msg
config: Introduce functions to write non-standard file
advice: Introduce error_resolve_conflict

Merge branch 'da/make-auto-header-dependencies'Junio C Hamano Wed, 5 Oct 2011 19:36:18 +0000 (12:36 -0700)

Merge branch 'da/make-auto-header-dependencies'

* da/make-auto-header-dependencies:
Makefile: Improve compiler header dependency check

Merge branch 'gb/am-hg-patch'Junio C Hamano Wed, 5 Oct 2011 19:36:17 +0000 (12:36 -0700)

Merge branch 'gb/am-hg-patch'

* gb/am-hg-patch:
am: preliminary support for hg patches

Merge branch 'bc/unstash-clean-crufts'Junio C Hamano Wed, 5 Oct 2011 19:36:17 +0000 (12:36 -0700)

Merge branch 'bc/unstash-clean-crufts'

* bc/unstash-clean-crufts:
git-stash: remove untracked/ignored directories when stashed
t/t3905: add missing '&&' linkage
git-stash.sh: fix typo in error message
t/t3905: use the name 'actual' for test output, swap arguments to test_cmp

Merge branch 'fk/make-auto-header-dependencies'Junio C Hamano Wed, 5 Oct 2011 19:36:16 +0000 (12:36 -0700)

Merge branch 'fk/make-auto-header-dependencies'

* fk/make-auto-header-dependencies:
Makefile: Use computed header dependencies if the compiler supports it

Merge branch 'ms/patch-id-with-overlong-line'Junio C Hamano Wed, 5 Oct 2011 19:35:55 +0000 (12:35 -0700)

Merge branch 'ms/patch-id-with-overlong-line'

* ms/patch-id-with-overlong-line:
patch-id.c: use strbuf instead of a fixed buffer

Merge branch 'jc/maint-bundle-too-quiet'Junio C Hamano Wed, 5 Oct 2011 19:35:55 +0000 (12:35 -0700)

Merge branch 'jc/maint-bundle-too-quiet'

* jc/maint-bundle-too-quiet:
Teach progress eye-candy to fetch_refs_from_bundle()

Merge branch 'jk/filter-branch-require-clean-work-tree'Junio C Hamano Wed, 5 Oct 2011 19:35:55 +0000 (12:35 -0700)

Merge branch 'jk/filter-branch-require-clean-work-tree'

* jk/filter-branch-require-clean-work-tree:
filter-branch: use require_clean_work_tree

Merge branch 'jc/want-commit'Junio C Hamano Wed, 5 Oct 2011 19:35:55 +0000 (12:35 -0700)

Merge branch 'jc/want-commit'

* jc/want-commit:
Allow git merge ":/<pattern>"

Merge branch 'jc/maint-fsck-fwrite-size-check'Junio C Hamano Wed, 5 Oct 2011 19:35:54 +0000 (12:35 -0700)

Merge branch 'jc/maint-fsck-fwrite-size-check'

* jc/maint-fsck-fwrite-size-check:
fsck: do not abort upon finding an empty blob

Merge branch 'bk/ancestry-path'Junio C Hamano Wed, 5 Oct 2011 19:35:54 +0000 (12:35 -0700)

Merge branch 'bk/ancestry-path'

* bk/ancestry-path:
t6019: avoid refname collision on case-insensitive systems
revision: do not include sibling history in --ancestry-path output
revision: keep track of the end-user input from the command line
rev-list: Demonstrate breakage with --ancestry-path --all

Merge branch 'jk/maint-fetch-submodule-check-fix'Junio C Hamano Wed, 5 Oct 2011 19:35:54 +0000 (12:35 -0700)

Merge branch 'jk/maint-fetch-submodule-check-fix'

* jk/maint-fetch-submodule-check-fix:
fetch: avoid quadratic loop checking for updated submodules

Merge branch 'tr/mergetool-valgrind'Junio C Hamano Wed, 5 Oct 2011 19:35:53 +0000 (12:35 -0700)

Merge branch 'tr/mergetool-valgrind'

* tr/mergetool-valgrind:
Symlink mergetools scriptlets into valgrind wrappers

Merge branch 'nm/grep-object-sha1-lock'Junio C Hamano Wed, 5 Oct 2011 19:35:53 +0000 (12:35 -0700)

Merge branch 'nm/grep-object-sha1-lock'

* nm/grep-object-sha1-lock:
grep: Fix race condition in delta_base_cache

Conflicts:
builtin/grep.c

Merge branch 'jc/diff-index-unpack'Junio C Hamano Wed, 5 Oct 2011 19:35:53 +0000 (12:35 -0700)

Merge branch 'jc/diff-index-unpack'

* jc/diff-index-unpack:
diff-index: pass pathspec down to unpack-trees machinery
unpack-trees: allow pruning with pathspec
traverse_trees(): allow pruning with pathspec

Merge branch 'mm/rebase-i-exec-edit'Junio C Hamano Wed, 5 Oct 2011 19:35:52 +0000 (12:35 -0700)

Merge branch 'mm/rebase-i-exec-edit'

* mm/rebase-i-exec-edit:
rebase -i: notice and warn if "exec $cmd" modifies the index or the working tree
rebase -i: clean error message for --continue after failed exec

Git 1.7.7 v1.7.7Junio C Hamano Fri, 30 Sep 2011 21:20:57 +0000 (14:20 -0700)

Git 1.7.7

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

refs: Use binary search to lookup refs fasterJulian Phillips Thu, 29 Sep 2011 22:11:42 +0000 (23:11 +0100)

refs: Use binary search to lookup refs faster

Currently we linearly search through lists of refs when we need to
find a specific ref. This can be very slow if we need to lookup a
large number of refs. By changing to a binary search we can make this
faster.

In order to be able to use a binary search we need to change from
using linked lists to arrays, which we can manage using ALLOC_GROW.

We can now also use the standard library qsort function to sort the
refs arrays.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree-walk: micro-optimization in tree_entry_interestingDan McGee Fri, 9 Sep 2011 02:02:46 +0000 (21:02 -0500)

tree-walk: micro-optimization in tree_entry_interesting

In the case of a wide breadth top-level tree (~2400 entries, all trees
in this case), we can see a noticeable cost in the profiler calling
strncmp() here. Most of the time we are at the base level of the
repository, so base is "" and baselen == 0, which means we will always
test true. Break out this one tiny case so we can short circuit the
strncmp() call.

Test cases are as follows. packages.git is the Arch Linux git-svn clone
of the packages repository which has the characteristics above.

Commands:
[1] packages.git, /usr/bin/time git log >/dev/null
[2] packages.git, /usr/bin/time git log -- autogen/trunk pacman/trunk wget/trunk >/dev/null
[3] linux.git, /usr/bin/time git log >/dev/null
[4] linux.git, /usr/bin/time git log -- drivers/ata drivers/uio tools >/dev/null

Results:
before after %faster
[1] 2.56 2.55 0.4%
[2] 51.82 48.66 6.5%
[3] 5.58 5.61 -0.5%
[4] 1.55 1.51 0.2%

The takeaway here is this doesn't matter in many operations, but it does
for a certain style of repository and operation where it nets a 6.5%
measured improvement. The other changes are likely not significant by
reasonable statistics methods.

Note: the measured improvement when originally submitted was ~11% (43 to
38 secs) for operation [2]. At the time, the repository had 117220
commits; it now has 137537 commits.

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree-walk: drop unused parameter from match_dir_prefixDan McGee Fri, 9 Sep 2011 02:02:45 +0000 (21:02 -0500)

tree-walk: drop unused parameter from match_dir_prefix

Signed-off-by: Dan McGee <dpmcgee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-remote-mediawiki: allow a domain to be set for... Matthieu Moy Wed, 28 Sep 2011 13:48:01 +0000 (15:48 +0200)

git-remote-mediawiki: allow a domain to be set for authentication

When the wiki uses e.g. LDAP for authentication, the web interface shows
a popup to allow the user to chose an authentication domain, and we need
to use lgdomain in the API at login time.

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

git-remote-mediawiki: obey advice.pushNonFastForwardMatthieu Moy Tue, 27 Sep 2011 17:55:00 +0000 (19:55 +0200)

git-remote-mediawiki: obey advice.pushNonFastForward

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

git-remote-mediawiki: set 'basetimestamp' to let the... Matthieu Moy Tue, 27 Sep 2011 17:54:59 +0000 (19:54 +0200)

git-remote-mediawiki: set 'basetimestamp' to let the wiki handle conflicts

We already have a check that no new revisions are on the wiki at the
beginning of the push, but this didn't handle concurrent accesses to the
wiki.

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

git-remote-mediawiki: trivial fixesMatthieu Moy Tue, 27 Sep 2011 17:54:58 +0000 (19:54 +0200)

git-remote-mediawiki: trivial fixes

Fix a whitespace issue (no space before :) and remove unused %status in
mw_push.

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

templates/hooks--*: remove sample hooks without any... Gerrit Pape Tue, 27 Sep 2011 11:56:53 +0000 (11:56 +0000)

templates/hooks--*: remove sample hooks without any functionality

Remove the sample post-commit and post-receive hooks. The sample
post-commit doesn't contain any sample functionality and the comments do
not provide more information than already found in the documentation.
The sample post-receive hooks doesn't provide any sample functionality
either and refers in the comments to a contrib hook that might be
installed in different locations on different systems, which isn't that
helpful.

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

notes_merge_commit(): do not pass temporary buffer... Michael Haggerty Tue, 27 Sep 2011 04:46:53 +0000 (06:46 +0200)

notes_merge_commit(): do not pass temporary buffer to other function

It is unsafe to pass a temporary buffer as an argument to
read_directory().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Acked-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

gitweb: Fix links to lines in blobs when javascript... Peter Stuge Tue, 27 Sep 2011 09:51:00 +0000 (11:51 +0200)

gitweb: Fix links to lines in blobs when javascript-actions are enabled

The fixLinks() function adds 'js=1' to each link that does not already
have 'js' query parameter specified. This is used to signal to gitweb
that the browser can actually do javascript when these links are used.

There are two problems with the existing code:

1. URIs with fragment and 'js' query parameter, like e.g.

...foo?js=0#l199

were not recognized as having 'js' query parameter already.

2. The 'js' query parameter, in the form of either '?js=1' or ';js=1'
was appended at the end of URI, even if it included a fragment
(had a hash part). This lead to the incorrect links like this

...foo#l199?js=1

instead of adding query parameter as last part of query, but
before the fragment part, i.e.

...foo?js=1#l199

Signed-off-by: Peter Stuge <peter@stuge.se>
Acked-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Don't sort ref_list too earlyJulian Phillips Tue, 27 Sep 2011 00:00:09 +0000 (01:00 +0100)

Don't sort ref_list too early

get_ref_dir is called recursively for subdirectories, which means that
we were calling sort_ref_list for each directory of refs instead of
once for all the refs. This is a massive wast of processing, so now
just call sort_ref_list on the result of the top-level get_ref_dir, so
that the sort is only done once.

In the common case of only a few different directories of refs the
difference isn't very noticable, but it becomes very noticeable when
you have a large number of direcotries containing refs (e.g. as
created by Gerrit).

Reported by Martin Fick.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

contrib/hooks: adapt comment about Debian install locat... Gerrit Pape Mon, 26 Sep 2011 12:58:35 +0000 (12:58 +0000)

contrib/hooks: adapt comment about Debian install location for contrib hooks

Placing the contrib hooks into /usr/share/doc/ wasn't a good idea in the
first place. According to the Debian policy they should be located in
/usr/share/git-core/, so let's put them there.

Thanks to Bill Allombert for reporting this through
http://bugs.debian.org/640949

Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jc/namespace-doc-with-old-asciidoc'Junio C Hamano Mon, 26 Sep 2011 17:50:08 +0000 (10:50 -0700)

Merge branch 'jc/namespace-doc-with-old-asciidoc'

* jc/namespace-doc-with-old-asciidoc:
Documentation/gitnamespaces.txt: cater to older asciidoc

git-read-tree.txt: update sparse checkout examplesNguyễn Thái Ngọc Duy Sun, 25 Sep 2011 23:09:15 +0000 (09:09 +1000)

git-read-tree.txt: update sparse checkout examples

The negation example uses '*' to match everything. This used to work
before 9037026 (unpack-trees: fix sparse checkout's "unable to match
directories") because back then, the list of paths is used to match
sparse patterns, so with the patterns

*
!subdir/

subdir/ always matches any path that start with subdir/ and "*" has no
chance to get tested. The result is subdir is excluded.

After the said commit, a tree structure is dynamically created and
sparse pattern matching now follows closely how read_directory()
applies .gitignore. This solves one problem, but reveals another one.

With this new strategy, "!subdir/" rule will be only tested once when
"subdir" directory is examined. Entries inside subdir, when examined,
will match "*" and are (correctly) re-added again because any rules
without a slash will match at every directory level. In the end, "*"
can revert every negation rules.

In order to correctly exclude subdir, we must use

/*
!subdir

to limit "match all" rule at top level only.

"*" rule has no actual use in sparse checkout and can be confusing to
users. While we can automatically turn "*" to "/*", this violates
.gitignore definition. Instead, discourage "*" in favor of "/*" (in
the second example).

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>