Junio C Hamano [Thu, 27 Feb 2014 22:01:21 +0000 (14:01 -0800)]
Merge branch 'nd/diff-quiet-stat-dirty'
"git diff --quiet -- pathspec1 pathspec2" sometimes did not return
correct status value.
* nd/diff-quiet-stat-dirty:
diff: do not quit early on stat-dirty files
diff.c: move diffcore_skip_stat_unmatch core logic out for reuse later
Junio C Hamano [Thu, 27 Feb 2014 22:01:15 +0000 (14:01 -0800)]
Merge branch 'nd/submodule-pathspec-ending-with-slash'
Allow "git cmd path/", when the 'path' is where a submodule is
bound to the top-level working tree, to match 'path', despite the
extra and unnecessary trailing slash.
* nd/submodule-pathspec-ending-with-slash:
clean: use cache_name_is_other()
clean: replace match_pathspec() with dir_path_match()
pathspec: pass directory indicator to match_pathspec_item()
match_pathspec: match pathspec "foo/" against directory "foo"
dir.c: prepare match_pathspec_item for taking more flags
pathspec: rename match_pathspec_depth() to match_pathspec()
pathspec: convert some match_pathspec_depth() to dir_path_match()
pathspec: convert some match_pathspec_depth() to ce_path_match()
Junio C Hamano [Thu, 27 Feb 2014 22:01:14 +0000 (14:01 -0800)]
Merge branch 'bk/refresh-missing-ok-in-merge-recursive'
Allow "merge-recursive" to work in an empty (temporary) working
tree again when there are renames involved, correcting an old
regression in 1.7.7 era.
* bk/refresh-missing-ok-in-merge-recursive:
merge-recursive.c: tolerate missing files while refreshing index
read-cache.c: extend make_cache_entry refresh flag with options
read-cache.c: refactor --ignore-missing implementation
t3030-merge-recursive: test known breakage with empty work tree
Junio C Hamano [Thu, 27 Feb 2014 22:01:11 +0000 (14:01 -0800)]
Merge branch 'da/pull-ff-configuration'
"git pull" learned to pay attention to pull.ff configuration
variable.
* da/pull-ff-configuration:
pull: add --ff-only to the help text
pull: add pull.ff configuration
Junio C Hamano [Thu, 27 Feb 2014 22:01:09 +0000 (14:01 -0800)]
Merge branch 'kb/fast-hashmap'
Improvements to our hash table to get it to meet the needs of the
msysgit fscache project, with some nice performance improvements.
* kb/fast-hashmap:
name-hash: retire unused index_name_exists()
hashmap.h: use 'unsigned int' for hash-codes everywhere
test-hashmap.c: drop unnecessary #includes
.gitignore: test-hashmap is a generated file
read-cache.c: fix memory leaks caused by removed cache entries
builtin/update-index.c: cleanup update_one
fix 'git update-index --verbose --again' output
remove old hash.[ch] implementation
name-hash.c: remove cache entries instead of marking them CE_UNHASHED
name-hash.c: use new hash map implementation for cache entries
name-hash.c: remove unreferenced directory entries
name-hash.c: use new hash map implementation for directories
diffcore-rename.c: use new hash map implementation
diffcore-rename.c: simplify finding exact renames
diffcore-rename.c: move code around to prepare for the next patch
buitin/describe.c: use new hash map implementation
add a hashtable implementation that supports O(1) removal
submodule: don't access the .gitmodules cache entry after removing it
Junio C Hamano [Thu, 27 Feb 2014 22:01:03 +0000 (14:01 -0800)]
Merge branch 'nv/commit-gpgsign-config'
Introduce commit.gpgsign configuration variable to force every
commit to be GPG signed. The variable cannot be overriden from the
command line of some of the commands that create commits except for
"git commit" and "git commit-tree", but I am not convinced that it
is a good idea to sprinkle support for --no-gpg-sign everywhere,
which in turn means that this configuration variable may not be
such a good idea.
* nv/commit-gpgsign-config:
test the commit.gpgsign config option
commit-tree: add and document --no-gpg-sign
commit-tree: add the commit.gpgsign option to sign all commits
Eric Sunshine [Thu, 2 Jan 2014 21:57:12 +0000 (16:57 -0500)]
name-hash: retire unused index_name_exists()
db5360f3f496 (name-hash: refactor polymorphic index_name_exists();
2013-09-17) split index_name_exists() into index_file_exists() and
index_dir_exists() but retained index_name_exists() as a thin wrapper
to avoid disturbing possible in-flight topics. Since this change
landed in 'master' some time ago and there are no in-flight topics
referencing index_name_exists(), retire it.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Karsten Blees [Wed, 18 Dec 2013 13:41:27 +0000 (14:41 +0100)]
hashmap.h: use 'unsigned int' for hash-codes everywhere
Signed-off-by: Karsten Blees <blees@dcon.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Vigier [Mon, 16 Dec 2013 13:55:04 +0000 (14:55 +0100)]
test the commit.gpgsign config option
The tests are checking that :
- when commit.gpgsign is true, "git commit" creates signed commits
- when commit.gpgsign is false, "git commit" creates unsigned commits
- when commit.gpgsign is true, "git commit --no-gpg-sign" creates
unsigned commits
- when commit.gpgsign is true, "git rebase -f" creates signed commits
Signed-off-by: Nicolas Vigier <boklm@mars-attacks.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 13 Dec 2013 23:40:35 +0000 (15:40 -0800)]
commit-tree: add and document --no-gpg-sign
Document how to override commit.gpgsign configuration that is set to
true per "git commit" invocation (parse-options machinery lets us
say "--no-gpg-sign" to do so).
"git commit-tree" does not use parse-options, so manually add the
corresponding option for now.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Vigier [Mon, 4 Nov 2013 23:14:41 +0000 (00:14 +0100)]
commit-tree: add the commit.gpgsign option to sign all commits
If you want to GPG sign all your commits, you have to add the -S option
all the time. The commit.gpgsign config option allows to sign all
commits automatically.
Signed-off-by: Nicolas Vigier <boklm@mars-attacks.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Sat, 25 Jan 2014 06:46:50 +0000 (13:46 +0700)]
diff: do not quit early on stat-dirty files
When QUICK is set (i.e. with --quiet) we try to do as little work as
possible, stopping after seeing the first change. stat-dirty is
considered a "change" but it may turn out not, if no actual content is
changed. The actual content test is performed too late in the process
and the shortcut may be taken prematurely, leading to incorrect return
code.
Assume we do "git diff --quiet". If we have a stat-dirty file "a" and
a really dirty file "b". We break the loop in run_diff_files() and
stop after "a" because we have got a "change". Later in
diffcore_skip_stat_unmatch() we find out "a" is actually not
changed. But there's nothing else in the diff queue, we incorrectly
declare "no change", ignoring the fact that "b" is changed.
This also happens to "git diff --quiet HEAD" when it hits
diff_can_quit_early() in oneway_diff().
This patch does the content test earlier in order to keep going if "a"
is unchanged. The test result is cached so that when
diffcore_skip_stat_unmatch() is done in the end, we spend no cycles on
re-testing "a".
Reported-by: IWAMOTO Toshihiro <iwamoto@valinux.co.jp>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Sat, 25 Jan 2014 06:46:49 +0000 (13:46 +0700)]
diff.c: move diffcore_skip_stat_unmatch core logic out for reuse later
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:35 +0000 (20:40 +0700)]
clean: use cache_name_is_other()
cmd_clean() has the exact same code of index_name_is_other(). Reduce
code duplication.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:34 +0000 (20:40 +0700)]
clean: replace match_pathspec() with dir_path_match()
This instance was left out when many match_pathspec() call sites that
take input from dir_entry were converted to dir_path_match() because
it passed a path with the trailing slash stripped out to match_pathspec()
while the others did not. Stripping for all call sites back then would
be a regression because match_pathspec() did not know how to match
pathspec foo/ against _directory_ foo (the stripped version of path
"foo/").
match_pathspec() knows how to do it now. And dir_path_match() strips
the trailing slash also. Use the new function, because the stripping
code is removed in the next patch.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:33 +0000 (20:40 +0700)]
pathspec: pass directory indicator to match_pathspec_item()
This patch activates the DO_MATCH_DIRECTORY code in m_p_i(), which
makes "git diff HEAD submodule/" and "git diff HEAD submodule" produce
the same output. Previously only the version without trailing slash
returns the difference (if any).
That's the effect of new ce_path_match(). dir_path_match() is not
executed by the new tests. And it should not introduce regressions.
Previously if path "dir/" is passed in with pathspec "dir/", they
obviously match. With new dir_path_match(), the path becomes
_directory_ "dir" vs pathspec "dir/", which is not executed by the old
code path in m_p_i(). The new code path is executed and produces the
same result.
The other case is pathspec "dir" and path "dir/" is now turned to
"dir" (with DO_MATCH_DIRECTORY). Still the same result before or after
the patch.
So why change? Because of the next patch about clean.c.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:32 +0000 (20:40 +0700)]
match_pathspec: match pathspec "foo/" against directory "foo"
Currently we do support matching pathspec "foo/" against directory
"foo". That is because match_pathspec() has no way to tell "foo" is a
directory and matching "foo/" against _file_ "foo" is wrong.
The callers can now tell match_pathspec if "foo" is a directory, we
could make an exception for this case. Code is not executed though
because no callers pass the flag yet.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:31 +0000 (20:40 +0700)]
dir.c: prepare match_pathspec_item for taking more flags
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:30 +0000 (20:40 +0700)]
pathspec: rename match_pathspec_depth() to match_pathspec()
A long time ago, for some reason I was not happy with
match_pathspec(). I created a better version, match_pathspec_depth()
that was suppose to replace match_pathspec()
eventually. match_pathspec() has finally been gone since 6 months
ago. Use the shorter name for match_pathspec_depth().
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:29 +0000 (20:40 +0700)]
pathspec: convert some match_pathspec_depth() to dir_path_match()
This helps reduce the number of match_pathspec_depth() call sites and
show how m_p_d() is used. And it usage is:
- match against an index entry (ce_path_match or match_pathspec_depth
in ls-files)
- match against a dir_entry from read_directory (dir_path_match and
match_pathspec_depth in clean.c, which will be converted later)
- resolve-undo (rerere.c and ls-files.c)
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Fri, 24 Jan 2014 13:40:28 +0000 (20:40 +0700)]
pathspec: convert some match_pathspec_depth() to ce_path_match()
This helps reduce the number of match_pathspec_depth() call sites and
show how match_pathspec_depth() is used.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathan Nieder [Sat, 14 Dec 2013 02:06:40 +0000 (18:06 -0800)]
test-hashmap.c: drop unnecessary #includes
Per Documentation/CodingGuidelines most C files in git start with
a #include of git-compat-util.h or another header file that includes
it, such as cache.h or builtin.h. This file doesn't need anything
beyond "git-compat-util.h", so use that.
Remove a #include of the system header <stdio.h> since it is already
included by "git-compat-util.h".
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathan Nieder [Sat, 14 Dec 2013 02:05:26 +0000 (18:05 -0800)]
.gitignore: test-hashmap is a generated file
Prevent the "test-hashmap" program from being accidentally tracked
with "git add" or cluttering "git status" output.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brad King [Mon, 27 Jan 2014 14:45:09 +0000 (09:45 -0500)]
merge-recursive.c: tolerate missing files while refreshing index
Teach add_cacheinfo to tell make_cache_entry to skip refreshing stat
information when a file is missing from the work tree. We do not want
the index to be stat-dirty after the merge but also do not want to fail
when a file happens to be missing.
This fixes the 'merge-recursive w/ empty work tree - ours has rename'
case in t3030-merge-recursive.
Suggested-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brad King [Mon, 27 Jan 2014 14:45:08 +0000 (09:45 -0500)]
read-cache.c: extend make_cache_entry refresh flag with options
Convert the make_cache_entry boolean 'refresh' argument to a more
general 'refresh_options' argument. Pass the value through to the
underlying refresh_cache_ent call. Add option CE_MATCH_REFRESH to
enable stat refresh. Update call sites to use the new signature.
Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brad King [Mon, 27 Jan 2014 14:45:07 +0000 (09:45 -0500)]
read-cache.c: refactor --ignore-missing implementation
Move lstat ENOENT handling from refresh_index to refresh_cache_ent and
activate it with a new CE_MATCH_IGNORE_MISSING option. This will allow
other call paths into refresh_cache_ent to use the feature.
Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brad King [Mon, 27 Jan 2014 14:45:06 +0000 (09:45 -0500)]
t3030-merge-recursive: test known breakage with empty work tree
Sometimes when working with a large repository it can be useful to try
out a merge and only check out conflicting files to disk (for example as
a speed optimization on a server). Until v1.7.7-rc1~28^2~20
(merge-recursive: When we detect we can skip an update, actually skip
it, 2011-08-11), it was possible to do so with the following idiom:
# Prepare a temporary index and empty work tree.
GIT_INDEX_FILE="$PWD/tmp-$$-index" &&
export GIT_INDEX_FILE &&
GIT_WORK_TREE="$PWD/tmp-$$-work" &&
export GIT_WORK_TREE &&
mkdir "$GIT_WORK_TREE" &&
# Convince the index that our side is on disk.
git read-tree -i -m $ours &&
git update-index --ignore-missing --refresh &&
# Merge their side into our side.
bases=$(git merge-base --all $ours $theirs) &&
git merge-recursive $bases -- $ours $theirs &&
tree=$(git write-tree)
Nowadays, that still works and the exit status is the same, but
merge-recursive produces a diagnostic if "our" side renamed a file:
error: addinfo_cache failed for path 'dst'
Add a test to document this regression.
Signed-off-by: Brad King <brad.king@kitware.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 14 Feb 2014 19:35:04 +0000 (11:35 -0800)]
Git 1.9.0
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael J Gruber [Thu, 13 Feb 2014 10:35:08 +0000 (11:35 +0100)]
release notes: typo fixes
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 13 Feb 2014 21:42:26 +0000 (13:42 -0800)]
Sync with 1.8.5.5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 13 Feb 2014 21:40:47 +0000 (13:40 -0800)]
Git 1.8.5.5
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 13 Feb 2014 21:38:59 +0000 (13:38 -0800)]
Merge branch 'bm/merge-base-octopus-dedup' into maint
"git merge-base --octopus" used to leave cleaning up suboptimal
result to the caller, but now it does the clean-up itself.
* bm/merge-base-octopus-dedup:
merge-base --octopus: reduce the result from get_octopus_merge_bases()
merge-base: separate "--independent" codepath into its own helper
Junio C Hamano [Thu, 13 Feb 2014 21:38:47 +0000 (13:38 -0800)]
Merge branch 'jc/revision-range-unpeel' into maint
"git log --left-right A...B" lost the "leftness" of commits
reachable from A when A is a tag as a side effect of a recent
bugfix. This is a regression in 1.8.4.x series.
* jc/revision-range-unpeel:
revision: propagate flag bits from tags to pointees
revision: mark contents of an uninteresting tree uninteresting
Junio C Hamano [Thu, 13 Feb 2014 21:38:34 +0000 (13:38 -0800)]
Merge branch 'jk/allow-fetch-onelevel-refname' into maint
"git clone" would fail to clone from a repository that has a ref
directly under "refs/", e.g. "refs/stash", because different
validation paths do different things on such a refname. Loosen the
client side's validation to allow such a ref.
* jk/allow-fetch-onelevel-refname:
fetch-pack: do not filter out one-level refs
Junio C Hamano [Thu, 13 Feb 2014 21:38:25 +0000 (13:38 -0800)]
Merge branch 'jk/interpret-branch-name-fix' into maint
A handful of bugs around interpreting $branch@{upstream} notation
and its lookalike, when $branch part has interesting characters,
e.g. "@", and ":", have been fixed.
* jk/interpret-branch-name-fix:
interpret_branch_name: find all possible @-marks
interpret_branch_name: avoid @{upstream} past colon
interpret_branch_name: always respect "namelen" parameter
interpret_branch_name: rename "cp" variable to "at"
interpret_branch_name: factor out upstream handling
Junio C Hamano [Thu, 13 Feb 2014 21:38:19 +0000 (13:38 -0800)]
Merge branch 'rk/send-email-ssl-cert' into maint
A recent update to "git send-email" broke platforms where
/etc/ssl/certs/ directory exists but cannot be used as SSL_ca_path
(e.g. Fedora rawhide).
* rk/send-email-ssl-cert:
send-email: /etc/ssl/certs/ directory may not be usable as ca_path
Junio C Hamano [Thu, 13 Feb 2014 21:38:09 +0000 (13:38 -0800)]
Merge branch 'sb/repack-in-c' into maint
"git repack --max-pack-size=8g" stopped being parsed correctly when
the command was reimplemented in C.
* sb/repack-in-c:
repack: propagate pack-objects options as strings
repack: make parsed string options const-correct
repack: fix typo in max-pack-size option
Junio C Hamano [Thu, 13 Feb 2014 21:37:53 +0000 (13:37 -0800)]
Merge branch 'as/tree-walk-fix-aggressive-short-cut' into maint
The pathspec matching code, while comparing two trees (e.g. "git
diff A B -- path1 path2") was too aggressive and failed to match
some paths when multiple pathspecs were involved.
* as/tree-walk-fix-aggressive-short-cut:
tree_entry_interesting: match against all pathspecs
Junio C Hamano [Wed, 12 Feb 2014 20:28:47 +0000 (12:28 -0800)]
Merge git://github.com/git-l10n/git-po
* 'master' of git://github.com/git-l10n/git-po:
l10n: de.po: correct message when hiding commits by craft
l10n: de.po: translate 28 new messages
Ralf Thielow [Sat, 8 Feb 2014 21:01:36 +0000 (22:01 +0100)]
l10n: de.po: correct message when hiding commits by craft
The recent translation was giving the idea that all commits
based on a graft were meant to be hidden. Make it clear that
it is the graft commit itself.
Reported-by: David Kastrup <dak@gnu.org>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Ralf Thielow [Fri, 3 Jan 2014 17:38:12 +0000 (18:38 +0100)]
l10n: de.po: translate 28 new messages
Translate 28 new messages came from git.pot update in
df49095 (l10n: git.pot: v1.9 round 1 (27 new, 11 removed)
and
d57b24b (l10n: git.pot: v1.9 round 2 (1 new)).
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Junio C Hamano [Tue, 11 Feb 2014 19:02:05 +0000 (11:02 -0800)]
Merge git://github.com/git-l10n/git-po
* 'master' of git://github.com/git-l10n/git-po:
l10n: zh_CN.po: Disambiguation for rebase
l10n: zh_CN.po: translate 1 new message (2211t0f0u)
l10n: vi.po (2211t): Updated one new string
l10n: Update Swedish translation (2211t0f0u)
l10n: fr: 1.9rc2 2211t
l10n: git.pot: v1.9 round 2 (1 new)
Junio C Hamano [Fri, 7 Feb 2014 19:56:07 +0000 (11:56 -0800)]
Git 1.9.0-rc3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 7 Feb 2014 19:55:11 +0000 (11:55 -0800)]
Merge branch 'ow/manpages-typofix'
Various typofixes, all looked correct.
* ow/manpages-typofix:
Documentation: fix typos in man pages
Junio C Hamano [Fri, 7 Feb 2014 19:55:10 +0000 (11:55 -0800)]
Merge branch 'aj/ada-diff-word-pattern'
* aj/ada-diff-word-pattern:
userdiff: update Ada patterns
Junio C Hamano [Fri, 7 Feb 2014 19:55:06 +0000 (11:55 -0800)]
Merge branch 'nd/tag-doc'
* nd/tag-doc:
git-tag.txt: <commit> for --contains is optional
Jiang Xin [Sun, 2 Feb 2014 12:46:58 +0000 (20:46 +0800)]
l10n: zh_CN.po: Disambiguation for rebase
Disambiguate the Chinese translation for "rebase", and update other
related entries.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Øystein Walle [Wed, 5 Feb 2014 22:19:43 +0000 (23:19 +0100)]
Documentation: fix typos in man pages
Signed-off-by: Øystein Walle <oystwa@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 5 Feb 2014 22:14:40 +0000 (14:14 -0800)]
Sync with 1.8.5.4
Junio C Hamano [Fri, 31 Jan 2014 23:14:05 +0000 (15:14 -0800)]
howto/maintain-git.txt: new version numbering scheme
We wanted to call the upcoming release "Git 1.9", with its
maintenance track being "Git 1.9.1", "Git 1.9.2", etc., but various
third-party tools are reported to assume that there are at least
three dewey-decimal components in our version number.
Adjust the plan so that vX.Y.0 are feature releases while vX.Y.Z
(Z > 0) are maintenance releases.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 5 Feb 2014 22:05:31 +0000 (14:05 -0800)]
Git 1.8.5.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 5 Feb 2014 22:03:47 +0000 (14:03 -0800)]
Merge branch 'jc/maint-pull-docfix' into maint
The documentation to "git pull" hinted there is an "-m" option
because it incorrectly shared the documentation with "git merge".
* jc/maint-pull-docfix:
Documentation: "git pull" does not have the "-m" option
Documentation: exclude irrelevant options from "git pull"
Junio C Hamano [Wed, 5 Feb 2014 22:03:20 +0000 (14:03 -0800)]
Merge branch 'ow/stash-with-ifs' into maint
The implementation of 'git stash $cmd "stash@{...}"' did not quote
the stash argument properly and left it split at IFS whitespace.
* ow/stash-with-ifs:
stash: handle specifying stashes with $IFS
Junio C Hamano [Wed, 5 Feb 2014 22:03:01 +0000 (14:03 -0800)]
Merge branch 'js/lift-parent-count-limit' into maint
There is no reason to have a hardcoded upper limit of the number of
parents for an octopus merge, created via the graft mechanism, but
there was.
* js/lift-parent-count-limit:
Remove the line length limit for graft files
Junio C Hamano [Wed, 5 Feb 2014 22:02:44 +0000 (14:02 -0800)]
Merge branch 'nd/add-empty-fix' into maint
"git add -A" (no other arguments) in a totally empty working tree
used to emit an error.
* nd/add-empty-fix:
add: don't complain when adding empty project root
Junio C Hamano [Wed, 5 Feb 2014 22:02:05 +0000 (14:02 -0800)]
Merge branch 'bc/log-decoration' into maint
"git log --decorate" did not handle a tag pointed by another tag
nicely.
* bc/log-decoration:
log: properly handle decorations with chained tags
Junio C Hamano [Wed, 5 Feb 2014 22:01:23 +0000 (14:01 -0800)]
Merge branch 'jh/rlimit-nofile-fallback' into maint
When we figure out how many file descriptors to allocate for
keeping packfiles open, a system with non-working getrlimit() could
cause us to die(), but because we make this call only to get a
rough estimate of how many is available and we do not even attempt
to use up all file descriptors available ourselves, it is nicer to
fall back to a reasonable low value rather than dying.
* jh/rlimit-nofile-fallback:
get_max_fd_limit(): fall back to OPEN_MAX upon getrlimit/sysconf failure
Junio C Hamano [Wed, 5 Feb 2014 22:01:09 +0000 (14:01 -0800)]
Merge branch 'jl/commit-v-strip-marker' into maint
"git commit -v" appends the patch to the log message before
editing, and then removes the patch when the editor returned
control. However, the patch was not stripped correctly when the
first modified path was a submodule.
* jl/commit-v-strip-marker:
commit -v: strip diffs and submodule shortlogs from the commit message
Junio C Hamano [Wed, 5 Feb 2014 22:00:18 +0000 (14:00 -0800)]
Merge branch 'tr/send-email-ssl' into maint
SSL-related options were not passed correctly to underlying socket
layer in "git send-email".
* tr/send-email-ssl:
send-email: set SSL options through IO::Socket::SSL::set_client_defaults
send-email: --smtp-ssl-cert-path takes an argument
send-email: pass Debug to Net::SMTP::SSL::new
Junio C Hamano [Wed, 5 Feb 2014 21:59:16 +0000 (13:59 -0800)]
Merge branch 'tb/clone-ssh-with-colon-for-port' into maint
Remote repository URL expressed in scp-style host:path notation are
parsed more carefully (e.g. "foo/bar:baz" is local, "[::1]:/~user" asks
to connect to user's home directory on host at address ::1.
* tb/clone-ssh-with-colon-for-port:
git_connect(): use common return point
connect.c: refactor url parsing
git_connect(): refactor the port handling for ssh
git fetch: support host:/~repo
t5500: add test cases for diag-url
git fetch-pack: add --diag-url
git_connect: factor out discovery of the protocol and its parts
git_connect: remove artificial limit of a remote command
t5601: add tests for ssh
t5601: remove clear_ssh, refactor setup_ssh_wrapper
Junio C Hamano [Wed, 5 Feb 2014 21:58:51 +0000 (13:58 -0800)]
Merge branch 'nd/transport-positive-depth-only' into maint
"git fetch --depth=0" was a no-op, and was silently ignored.
Diagnose it as an error.
* nd/transport-positive-depth-only:
clone,fetch: catch non positive --depth option value
Junio C Hamano [Wed, 5 Feb 2014 20:02:29 +0000 (12:02 -0800)]
Merge branch 'tb/repack-fix-renames' (early part)
Finishing touches to the "rewrite repack in C" series.
* 'tb/repack-fix-renames' (early part):
repack.c: rename and unlink pack file if it exists
Torsten Bögershausen [Sun, 2 Feb 2014 15:09:56 +0000 (16:09 +0100)]
repack.c: rename and unlink pack file if it exists
When a repo was fully repacked, and is repacked again, we may run
into the situation that "new" packfiles have the same name as
already existing ones (traditionally packfiles have been named after
the list of names of objects in them, so repacking all the objects
in a single pack would have produced a packfile with the same name).
The logic is to rename the existing ones into filename like
"old-XXX", create the new ones and then remove the "old-" ones.
When something went wrong in the middle, this sequence is rolled
back by renaming the "old-" files back.
The renaming into "old-" did not work as intended, because
file_exists() was done on "XXX", not "pack-XXX". Also when rolling
back the change, the code tried to rename "old-pack-XXX" but the
saved ones are named "old-XXX", so this couldn't have worked.
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Adrian Johnson [Mon, 3 Feb 2014 11:33:16 +0000 (22:03 +1030)]
userdiff: update Ada patterns
- Allow extra space in "is new" and "is separate"
- Fix bug in word regex for numbers
Signed-off-by: Adrian Johnson <ajohnson@redneon.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Tue, 4 Feb 2014 02:56:26 +0000 (09:56 +0700)]
git-tag.txt: <commit> for --contains is optional
This goes far back to
e84fb2f (branch --contains: default to HEAD -
2008-07-08) where the same parsing code is shared with
builtin/tag.c. git-branch.txt correctly states that <commit> for
--contains is optional while git-tag.txt does not. Correct it.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Sun, 2 Feb 2014 12:46:58 +0000 (20:46 +0800)]
l10n: zh_CN.po: translate 1 new message (2211t0f0u)
Update translation for git v1.9-rc2.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Jiang Xin [Mon, 3 Feb 2014 01:47:27 +0000 (09:47 +0800)]
Merge branch 'master' of git://github.com/nafmo/git-l10n-sv
* 'master' of git://github.com/nafmo/git-l10n-sv:
l10n: Update Swedish translation (2211t0f0u)
Jiang Xin [Mon, 3 Feb 2014 01:45:14 +0000 (09:45 +0800)]
Merge branch 'master' of git://github.com/vnwildman/git
* 'master' of git://github.com/vnwildman/git:
l10n: vi.po (2211t): Updated one new string
Tran Ngoc Quan [Mon, 3 Feb 2014 00:49:47 +0000 (07:49 +0700)]
l10n: vi.po (2211t): Updated one new string
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
Peter Krefting [Sun, 2 Feb 2014 16:22:21 +0000 (17:22 +0100)]
l10n: Update Swedish translation (2211t0f0u)
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Jean-Noel Avila [Sun, 2 Feb 2014 13:36:32 +0000 (14:36 +0100)]
l10n: fr: 1.9rc2 2211t
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Jiang Xin [Sat, 1 Feb 2014 00:07:02 +0000 (08:07 +0800)]
l10n: git.pot: v1.9 round 2 (1 new)
Generate po/git.pot from v1.9-rc2 for git v1.9 l10n round 2.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Junio C Hamano [Fri, 31 Jan 2014 22:16:06 +0000 (14:16 -0800)]
Git 1.9-rc2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 31 Jan 2014 18:52:29 +0000 (10:52 -0800)]
Merge git://github.com/git-l10n/git-po
* 'master' of git://github.com/git-l10n/git-po:
l10n: Bulgarian translation of git (222t21f1967u)
po/TEAMS: Added Bulgarian team
l10n: remove 2 blank translations on Danish, Dutch
l10n: zh_CN.po: translate 27 messages (2210t0f0u)
l10n: Update Swedish translation (2210t0f0u)
[fr] update french translation 2210/2210
l10n: vi.po (2210t): Updated git-core translation
l10n: git.pot: v1.9 round 1 (27 new, 11 removed)
Junio C Hamano [Fri, 31 Jan 2014 18:51:57 +0000 (10:51 -0800)]
Merge branch 'jn/pager-lv-default-env'
A finishing touch to its test.
* jn/pager-lv-default-env:
pager test: make fake pager consume all its input
Jonathan Nieder [Thu, 30 Jan 2014 16:42:32 +0000 (08:42 -0800)]
pager test: make fake pager consume all its input
Otherwise there is a race: if 'git log' finishes writing before the
pager terminates and closes the pipe, all is well, and if the pager
finishes quickly enough then 'git log' terminates with SIGPIPE.
died of signal 13 at /build/buildd/git-1.9~rc1/t/test-terminal.perl line 33.
not ok 6 - LESS and LV envvars are set for pagination
Noticed on Ubuntu PPA builders, where the race was lost about half the
time. Compare v1.7.0.2~6^2 (tests: Fix race condition in t7006-pager,
2010-02-22).
Reported-by: Anders Kaseorg <andersk@MIT.EDU>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alexander Shopov [Mon, 20 Jan 2014 19:39:30 +0000 (21:39 +0200)]
l10n: Bulgarian translation of git (222t21f1967u)
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
Alexander Shopov [Tue, 28 Jan 2014 17:14:08 +0000 (19:14 +0200)]
po/TEAMS: Added Bulgarian team
Signed-off-by: Alexander Shopov <ash@kambanaria.org>
Junio C Hamano [Mon, 27 Jan 2014 19:01:35 +0000 (11:01 -0800)]
Git 1.9-rc1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 27 Jan 2014 18:48:32 +0000 (10:48 -0800)]
Merge branch 'as/tree-walk-fix-aggressive-short-cut'
* as/tree-walk-fix-aggressive-short-cut:
tree_entry_interesting: match against all pathspecs
Junio C Hamano [Mon, 27 Jan 2014 18:45:59 +0000 (10:45 -0800)]
Merge branch 'ta/doc-http-protocol-in-html'
* ta/doc-http-protocol-in-html:
http-protocol.txt: don't use uppercase for variable names in "The Negotiation Algorithm"
Documentation: make it easier to maintain enumerated documents
create HTML for http-protocol.txt
Junio C Hamano [Mon, 27 Jan 2014 18:45:56 +0000 (10:45 -0800)]
Merge branch 'mh/doc-wo-names'
* mh/doc-wo-names:
doc: remote author/documentation sections from more pages
Junio C Hamano [Mon, 27 Jan 2014 18:45:52 +0000 (10:45 -0800)]
Merge branch 'jk/revision-o-is-in-libgit-a'
* jk/revision-o-is-in-libgit-a:
Makefile: remove redundant object in git-http{fetch,push}
Junio C Hamano [Mon, 27 Jan 2014 18:45:49 +0000 (10:45 -0800)]
Merge branch 'sb/repack-in-c'
"git repack --max-pack-size=8g" stopped being parsed correctly when
the command was reimplemented in C.
* sb/repack-in-c:
repack: propagate pack-objects options as strings
repack: make parsed string options const-correct
repack: fix typo in max-pack-size option
Junio C Hamano [Mon, 27 Jan 2014 18:45:46 +0000 (10:45 -0800)]
Merge branch 'jk/test-fixes'
* jk/test-fixes:
t7700: do not use "touch" unnecessarily
t7501: fix "empty commit" test with NO_PERL
Junio C Hamano [Mon, 27 Jan 2014 18:45:43 +0000 (10:45 -0800)]
Merge branch 'nd/negative-pathspec'
* nd/negative-pathspec:
tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting()
Junio C Hamano [Mon, 27 Jan 2014 18:45:41 +0000 (10:45 -0800)]
Merge branch 'pw/git-p4'
Various "git p4" updates.
* pw/git-p4:
git p4 doc: use two-line style for options with multiple spellings
git p4 test: examine behavior with locked (+l) files
git p4: fix an error message when "p4 where" fails
git p4: handle files with wildcards when doing RCS scrubbing
git p4 test: do not pollute /tmp
git p4 test: run as user "author"
git p4 test: is_cli_file_writeable succeeds
git p4 test: explicitly check p4 wildcard delete
git p4: work around p4 bug that causes empty symlinks
git p4 test: ensure p4 symlink parsing works
git p4 test: wildcards are supported
Junio C Hamano [Mon, 27 Jan 2014 18:45:37 +0000 (10:45 -0800)]
Merge branch 'ss/safe-create-leading-dir-with-slash'
"git clone $origin foo\bar\baz" on Windows failed to create the
leading directories (i.e. a moral-equivalent of "mkdir -p").
* ss/safe-create-leading-dir-with-slash:
safe_create_leading_directories(): on Windows, \ can separate path components
Junio C Hamano [Mon, 27 Jan 2014 18:45:33 +0000 (10:45 -0800)]
Merge branch 'mh/safe-create-leading-directories'
Code clean-up and protection against concurrent write access to the
ref namespace.
* mh/safe-create-leading-directories:
rename_tmp_log(): on SCLD_VANISHED, retry
rename_tmp_log(): limit the number of remote_empty_directories() attempts
rename_tmp_log(): handle a possible mkdir/rmdir race
rename_ref(): extract function rename_tmp_log()
remove_dir_recurse(): handle disappearing files and directories
remove_dir_recurse(): tighten condition for removing unreadable dir
lock_ref_sha1_basic(): if locking fails with ENOENT, retry
lock_ref_sha1_basic(): on SCLD_VANISHED, retry
safe_create_leading_directories(): add new error value SCLD_VANISHED
cmd_init_db(): when creating directories, handle errors conservatively
safe_create_leading_directories(): introduce enum for return values
safe_create_leading_directories(): always restore slash at end of loop
safe_create_leading_directories(): split on first of multiple slashes
safe_create_leading_directories(): rename local variable
safe_create_leading_directories(): add explicit "slash" pointer
safe_create_leading_directories(): reduce scope of local variable
safe_create_leading_directories(): fix format of "if" chaining
Junio C Hamano [Mon, 27 Jan 2014 18:45:30 +0000 (10:45 -0800)]
Merge branch 'tr/nth-previous-is-a-commit'
* tr/nth-previous-is-a-commit:
Documentation: @{-N} can refer to a commit
Junio C Hamano [Mon, 27 Jan 2014 18:45:23 +0000 (10:45 -0800)]
Merge branch 'tr/gitk-doc-range-trace'
* tr/gitk-doc-range-trace:
Documentation/gitk: document -L option
Junio C Hamano [Mon, 27 Jan 2014 18:45:08 +0000 (10:45 -0800)]
Merge branch 'jk/mark-edges-uninteresting'
Fix performance regression in v1.8.4.x and later.
* jk/mark-edges-uninteresting:
list-objects: only look at cmdline trees with edge_hint
t/perf: time rev-list with UNINTERESTING commits
Junio C Hamano [Mon, 27 Jan 2014 18:45:02 +0000 (10:45 -0800)]
Merge branch 'jk/diff-filespec-cleanup'
* jk/diff-filespec-cleanup:
diff_filespec: use only 2 bits for is_binary flag
diff_filespec: reorder is_binary field
diff_filespec: drop xfrm_flags field
diff_filespec: drop funcname_pattern_ident field
diff_filespec: reorder dirty_submodule macro definitions
Junio C Hamano [Mon, 27 Jan 2014 18:44:59 +0000 (10:44 -0800)]
Merge branch 'ef/mingw-write'
* ef/mingw-write:
mingw: remove mingw_write
prefer xwrite instead of write
Junio C Hamano [Mon, 27 Jan 2014 18:44:34 +0000 (10:44 -0800)]
Merge branch 'rk/send-email-ssl-cert'
The "if /etc/ssl/certs/ directory exists, explicitly telling the
library to use it as SSL_ca_path" blind-defaulting in "git
send-email" broke platforms where /etc/ssl/certs/ directory exists,
but it cannot used as SSL_ca_path (e.g. Fedora rawhide). Fix it by
not specifying any SSL_ca_path/SSL_ca_file but still asking for peer
verification in such a case.
* rk/send-email-ssl-cert:
send-email: /etc/ssl/certs/ directory may not be usable as ca_path
Junio C Hamano [Mon, 27 Jan 2014 18:44:26 +0000 (10:44 -0800)]
Merge branch 'jn/ignore-doc'
Explicitly list $HOME/.config/git/ignore as one of the places you
can use to keep ignore patterns that depend on your personal choice
of tools, e.g. *~ for Emacs users.
* jn/ignore-doc:
gitignore doc: add global gitignore to synopsis
Junio C Hamano [Mon, 27 Jan 2014 18:44:20 +0000 (10:44 -0800)]
Merge branch 'jk/interpret-branch-name-fix'
Fix a handful of bugs around interpreting $branch@{upstream}
notation and its lookalike, when $branch part has interesting
characters, e.g. "@", and ":".
* jk/interpret-branch-name-fix:
interpret_branch_name: find all possible @-marks
interpret_branch_name: avoid @{upstream} past colon
interpret_branch_name: always respect "namelen" parameter
interpret_branch_name: rename "cp" variable to "at"
interpret_branch_name: factor out upstream handling
Junio C Hamano [Mon, 27 Jan 2014 18:44:13 +0000 (10:44 -0800)]
Merge branch 'jk/allow-fetch-onelevel-refname'
"git clone" would fail to clone from a repository that has a ref
directly under "refs/", e.g. "refs/stash", because different
validation paths do different things on such a refname. Loosen the
client side's validation to allow such a ref.
* jk/allow-fetch-onelevel-refname:
fetch-pack: do not filter out one-level refs
Junio C Hamano [Mon, 27 Jan 2014 18:44:09 +0000 (10:44 -0800)]
Merge branch 'jc/revision-range-unpeel'
"git log --left-right A...B" lost the "leftness" of commits
reachable from A when A is a tag as a side effect of a recent
bugfix. This is a regression in 1.8.4.x series.
* jc/revision-range-unpeel:
revision: propagate flag bits from tags to pointees
revision: mark contents of an uninteresting tree uninteresting
Junio C Hamano [Mon, 27 Jan 2014 18:44:06 +0000 (10:44 -0800)]
Merge branch 'mh/retire-ref-fetch-rules'
Code simplification.
* mh/retire-ref-fetch-rules:
refname_match(): always use the rules in ref_rev_parse_rules