Junio C Hamano [Wed, 12 Oct 2011 19:34:18 +0000 (12:34 -0700)]
Merge branch 'nd/document-err-packet'
* nd/document-err-packet:
pack-protocol: document "ERR" line
Junio C Hamano [Wed, 12 Oct 2011 19:34:15 +0000 (12:34 -0700)]
Merge branch 'jc/parse-options-boolean'
* jc/parse-options-boolean:
apply: use OPT_NOOP_NOARG
revert: use OPT_NOOP_NOARG
parseopt: add OPT_NOOP_NOARG
archive.c: use OPT_BOOL()
parse-options: deprecate OPT_BOOLEAN
Conflicts:
builtin/revert.c
Junio C Hamano [Wed, 12 Oct 2011 19:34:11 +0000 (12:34 -0700)]
Merge branch 'rs/test-ctype'
* rs/test-ctype:
test-ctype: add test for is_pathspec_magic
test-ctype: macrofy
Junio C Hamano [Wed, 12 Oct 2011 19:34:08 +0000 (12:34 -0700)]
Merge branch 'rs/name-rev-usage'
* rs/name-rev-usage:
name-rev: split usage string
Junio C Hamano [Wed, 12 Oct 2011 19:34:05 +0000 (12:34 -0700)]
Merge branch 'cs/perl-config-path-send-email'
* cs/perl-config-path-send-email:
use new Git::config_path() for aliasesfile
Add Git::config_path()
Junio C Hamano [Wed, 12 Oct 2011 19:34:03 +0000 (12:34 -0700)]
Merge branch 'zj/send-email-authen-sasl'
* zj/send-email-authen-sasl:
send-email: auth plain/login fix
Nguyễn Thái Ngọc Duy [Wed, 12 Oct 2011 09:35:04 +0000 (20:35 +1100)]
t5403: convert leading spaces to tabs
The first and last tests use tabs. The rest uses spaces. Convert all
to tabs.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio 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>
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
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
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
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
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
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
...
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()
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
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
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'
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
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
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
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
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>
Brandon 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>
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>
Ramsay 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>
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>
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>
Michael 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>
Michael 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>
Michael 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Michael 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>
Michael 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>
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>
Michael 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>
Michael 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>
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>
Michael 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>
Michael 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>
Junio 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>
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)
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
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
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
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
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
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'
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
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
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
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
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
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
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
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
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()
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
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
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
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()
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
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
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
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
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
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
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
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
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()
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
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>"
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
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
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
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
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
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
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
Nguyen Thai Ngoc Duy [Mon, 3 Oct 2011 18:13:38 +0000 (05:13 +1100)]
pack-protocol: document "ERR" line
Since
a807328 (connect.c: add a way for git-daemon to pass an error
back to client), git client recognizes "ERR" line and prints a
friendly message to user if an error happens at server side.
Document this.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Sat, 1 Oct 2011 17:04:44 +0000 (19:04 +0200)]
name-rev: split usage string
Give each mode of operation (all, from stdin, given commits) its own usage
line to make it easier to see that they are mutually exclusive.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Sat, 1 Oct 2011 16:39:58 +0000 (18:39 +0200)]
test-ctype: add test for is_pathspec_magic
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Sat, 1 Oct 2011 16:36:14 +0000 (18:36 +0200)]
test-ctype: macrofy
Rewrite test-ctype to use a global variable and a macro instead of
wrapper functions for each character class and complicated structs
with loops going through them. The resulting code may be uglier,
but that's OK for a test program, and it's actually easier to read
and extend. And much shorter.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio 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>
Cord Seele [Fri, 30 Sep 2011 10:52:25 +0000 (12:52 +0200)]
use new Git::config_path() for aliasesfile
Signed-off-by: Cord Seele <cowose@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Cord Seele [Fri, 30 Sep 2011 10:52:24 +0000 (12:52 +0200)]
Add Git::config_path()
Use --path option when calling 'git config' thus allow for pathname
expansion, e.g. a tilde.
Signed-off-by: Cord Seele <cowose@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Julian 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>
Zbigniew Jędrzejewski-Szmek [Thu, 29 Sep 2011 17:02:45 +0000 (19:02 +0200)]
send-email: auth plain/login fix
git send-email was not authenticating properly when communicating over
TLS with a server supporting only AUTH PLAIN and AUTH LOGIN. This is
e.g. the standard server setup under debian with exim4 and probably
everywhere where system accounts are used.
The problem (only?) exists when libauthen-sasl-cyrus-perl
(Authen::SASL::Cyrus) is installed. Importing Authen::SASL::Perl
makes Authen::SASL use the perl implementation which works
better.
The solution is based on this forum thread:
http://www.perlmonks.org/?node_id=904354.
This patch is tested by sending it. Without this fix, the interaction with
the server failed like this:
$ git send-email --smtp-encryption=tls --smtp-server=... --smtp-debug=1 change1.patch
...
Net::SMTP::SSL=GLOB(0x238f668)<<< 250-AUTH LOGIN PLAIN
Password:
Net::SMTP::SSL=GLOB(0x238f668)>>> AUTH
Net::SMTP::SSL=GLOB(0x238f668)<<< 501 5.5.2 AUTH mechanism must be specified
5.5.2 AUTH mechanism must be specified
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dan 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>