Junio C Hamano [Wed, 25 Mar 2015 19:54:22 +0000 (12:54 -0700)]
Merge branch 'dj/log-graph-with-no-walk'
"git log --graph --no-walk A B..." is a otcnflicting request that
asks nonsense; no-walk tells us show discrete points in the
history, while graph asks to draw connections between these
discrete points. Forbid the combination.
* dj/log-graph-with-no-walk:
revision: forbid combining --graph and --no-walk
Junio C Hamano [Wed, 25 Mar 2015 19:54:21 +0000 (12:54 -0700)]
Merge branch 'kd/rev-list-bisect-first-parent'
"git rev-list --bisect --first-parent" does not work (yet) and can
even cause SEGV; forbid it. "git log --bisect --first-parent"
would not be useful until "git bisect --first-parent" materializes,
so it is also forbidden for now.
* kd/rev-list-bisect-first-parent:
rev-list: refuse --first-parent combined with --bisect
Junio C Hamano [Wed, 25 Mar 2015 19:54:20 +0000 (12:54 -0700)]
Merge branch 'ws/grep-quiet-no-pager'
Even though "git grep --quiet" is run merely to ask for the exit
status, we spawned the pager regardless. Stop doing that.
* ws/grep-quiet-no-pager:
grep: fix "--quiet" overwriting current output
Junio C Hamano [Wed, 25 Mar 2015 19:54:19 +0000 (12:54 -0700)]
Merge branch 'jk/simplify-csum-file-sha1fd-check'
Code simplification.
* jk/simplify-csum-file-sha1fd-check:
sha1fd_check: die when we cannot open the file
Junio C Hamano [Wed, 25 Mar 2015 19:54:18 +0000 (12:54 -0700)]
Merge branch 'ct/prompt-untracked-fix'
The prompt script (in contrib/) did not show the untracked sign
when working in a subdirectory without any untracked files.
* ct/prompt-untracked-fix:
git prompt: use toplevel to find untracked files
Junio C Hamano [Tue, 24 Mar 2015 23:10:37 +0000 (16:10 -0700)]
Merge branch 'master' of git://ozlabs.org/~paulus/gitk
* 'master' of git://ozlabs.org/~paulus/gitk:
gitk: Update .po files
gitk: l10n: Add Catalan translation
gitk: Fix typo in Russian translation
gitk: Remove tcl-format flag from a message that shouldn't have it
gitk: Pass --invert-grep option down to "git log"
gitk: Synchronize config file writes
gitk: Report errors in saving config file
gitk: Only write changed configuration variables
gitk: Enable mouse horizontal scrolling in diff pane
gitk: Default wrcomcmd to use --pretty=email
Junio C Hamano [Mon, 23 Mar 2015 18:37:49 +0000 (11:37 -0700)]
Sync with v2.3.4
Junio C Hamano [Mon, 23 Mar 2015 18:36:01 +0000 (11:36 -0700)]
Post 2.3 cycle (batch #12)
Hopefully with another batch or two, we would be ready for -rc0
to close this cycle.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 23 Mar 2015 18:28:16 +0000 (11:28 -0700)]
Merge branch 'js/completion-ctags-pattern-substitution-fix'
The code that reads from the ctags file in the completion script
(in contrib/) did not spell ${param/pattern/string} substitution
correctly, which happened to work with bash but not with zsh.
* js/completion-ctags-pattern-substitution-fix:
contrib/completion: escape the forward slash in __git_match_ctag
Junio C Hamano [Mon, 23 Mar 2015 18:28:13 +0000 (11:28 -0700)]
Merge branch 'jk/push-config'
Restructure "git push" codepath to make it easier to add new
configuration bits and then add push.followTags configuration that
turns --follow-tags option on by default.
* jk/push-config:
push: allow --follow-tags to be set by config push.followTags
cmd_push: pass "flags" pointer to config callback
cmd_push: set "atomic" bit directly
git_push_config: drop cargo-culted wt_status pointer
Junio C Hamano [Mon, 23 Mar 2015 18:28:12 +0000 (11:28 -0700)]
Merge branch 'nd/config-doc-camelCase'
Documentation updates.
* nd/config-doc-camelCase:
*config.txt: stick to camelCase naming convention
Junio C Hamano [Mon, 23 Mar 2015 18:28:10 +0000 (11:28 -0700)]
Merge branch 'jk/test-annoyances'
Test fixes.
* jk/test-annoyances:
t5551: make EXPENSIVE test cheaper
t5541: move run_with_cmdline_limit to test-lib.sh
t: pass GIT_TRACE through Apache
t: redirect stderr GIT_TRACE to descriptor 4
t: translate SIGINT to an exit
Junio C Hamano [Mon, 23 Mar 2015 18:28:08 +0000 (11:28 -0700)]
Merge branch 'jk/smart-http-hide-refs'
The transfer.hiderefs support did not quite work for smart-http
transport.
* jk/smart-http-hide-refs:
upload-pack: do not check NULL return of lookup_unknown_object
upload-pack: fix transfer.hiderefs over smart-http
Junio C Hamano [Mon, 23 Mar 2015 18:28:02 +0000 (11:28 -0700)]
Merge branch 'jk/tag-h-column-is-a-listing-option'
"git tag -h" used to show the "--column" and "--sort" options
that are about listing in a wrong section.
* jk/tag-h-column-is-a-listing-option:
tag: fix some mis-organized options in "-h" listing
Junio C Hamano [Mon, 23 Mar 2015 18:27:27 +0000 (11:27 -0700)]
Git 2.3.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Mon, 23 Mar 2015 18:23:41 +0000 (11:23 -0700)]
Merge branch 'rs/use-isxdigit' into maint
Code cleanup.
* rs/use-isxdigit:
use isxdigit() for checking if a character is a hexadecimal digit
Junio C Hamano [Mon, 23 Mar 2015 18:23:37 +0000 (11:23 -0700)]
Merge branch 'rs/deflate-init-cleanup' into maint
Code simplification.
* rs/deflate-init-cleanup:
zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}
Junio C Hamano [Mon, 23 Mar 2015 18:23:35 +0000 (11:23 -0700)]
Merge branch 'ak/git-done-help-cleanup' into maint
Code simplification.
* ak/git-done-help-cleanup:
git: make was_alias and done_help non-static
Junio C Hamano [Mon, 23 Mar 2015 18:23:33 +0000 (11:23 -0700)]
Merge branch 'sg/completion-remote' into maint
Code simplification.
* sg/completion-remote:
completion: simplify __git_remotes()
completion: add a test for __git_remotes() helper function
Junio C Hamano [Mon, 23 Mar 2015 18:23:30 +0000 (11:23 -0700)]
Merge branch 'mg/doc-status-color-slot' into maint
Documentation fixes.
* mg/doc-status-color-slot:
config,completion: add color.status.unmerged
Junio C Hamano [Mon, 23 Mar 2015 18:23:28 +0000 (11:23 -0700)]
Merge branch 'jc/decorate-leaky-separator-color' into maint
"git log --decorate" did not reset colors correctly around the
branch names.
* jc/decorate-leaky-separator-color:
log --decorate: do not leak "commit" color into the next item
Documentation/config.txt: simplify boolean description in the syntax section
Documentation/config.txt: describe 'color' value type in the "Values" section
Documentation/config.txt: have a separate "Values" section
Documentation/config.txt: describe the structure first and then meaning
Documentation/config.txt: explain multi-valued variables once
Documentation/config.txt: avoid unnecessary negation
Junio C Hamano [Mon, 23 Mar 2015 18:23:25 +0000 (11:23 -0700)]
Merge branch 'kn/git-cd-to-empty' into maint
"git -C '' subcmd" refused to work in the current directory, unlike
"cd ''" which silently behaves as a no-op.
* kn/git-cd-to-empty:
git: treat "git -C '<path>'" as a no-op when <path> is empty
Junio C Hamano [Mon, 23 Mar 2015 18:23:22 +0000 (11:23 -0700)]
Merge branch 'km/imap-send-libcurl-options' into maint
"git imap-send" learned to optionally talk with an IMAP server via
libcURL; because there is no other option when Git is built with
NO_OPENSSL option, use that codepath by default under such
configuration.
* km/imap-send-libcurl-options:
imap-send: use cURL automatically when NO_OPENSSL defined
Junio C Hamano [Mon, 23 Mar 2015 18:23:19 +0000 (11:23 -0700)]
Merge branch 'mg/verify-commit' into maint
Workarounds for certain build of GPG that triggered false breakage
in a test.
* mg/verify-commit:
t7510: do not fail when gpg warns about insecure memory
Junio C Hamano [Mon, 23 Mar 2015 18:23:17 +0000 (11:23 -0700)]
Merge branch 'es/rebase-i-count-todo' into maint
"git rebase -i" recently started to include the number of
commits in the insn sheet to be processed, but on a platform
that prepends leading whitespaces to "wc -l" output, the numbers
are shown with extra whitespaces that aren't necessary.
* es/rebase-i-count-todo:
rebase-interactive: re-word "item count" comment
rebase-interactive: suppress whitespace preceding item count
Junio C Hamano [Mon, 23 Mar 2015 18:23:12 +0000 (11:23 -0700)]
Merge branch 'tb/connect-ipv6-parse-fix' into maint
We did not parse username followed by literal IPv6 address in SSH
transport URLs, e.g. ssh://user@[2001:db8::1]:22/repo.git
correctly.
* tb/connect-ipv6-parse-fix:
t5500: show user name and host in diag-url
t5601: add more test cases for IPV6
connect.c: allow ssh://user@[2001:db8::1]/repo.git
Junio C Hamano [Fri, 20 Mar 2015 20:31:53 +0000 (13:31 -0700)]
Post 2.3 cycle (batch #11)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 20 Mar 2015 20:51:24 +0000 (13:51 -0700)]
Merge branch 'mg/log-decorate-HEAD'
Output from "git log --decorate" mentions HEAD when it points at a
tip of an branch differently from a detached HEAD.
This is a potentially backward-incompatible change.
* mg/log-decorate-HEAD:
log: decorate HEAD with branch name
Junio C Hamano [Fri, 20 Mar 2015 20:50:51 +0000 (13:50 -0700)]
Merge branch 'jc/decorate-leaky-separator-color'
"git log --decorate" did not reset colors correctly around the
branch names.
* jc/decorate-leaky-separator-color:
log --decorate: do not leak "commit" color into the next item
Documentation/config.txt: simplify boolean description in the syntax section
Documentation/config.txt: describe 'color' value type in the "Values" section
Documentation/config.txt: have a separate "Values" section
Documentation/config.txt: describe the structure first and then meaning
Documentation/config.txt: explain multi-valued variables once
Documentation/config.txt: avoid unnecessary negation
Junio C Hamano [Fri, 20 Mar 2015 20:11:53 +0000 (13:11 -0700)]
Merge branch 'sb/leaks'
Code cleanup.
* sb/leaks:
builtin/help.c: fix memory leak
bundle.c: fix memory leak
connect.c: do not leak "conn" after showing diagnosis
Junio C Hamano [Fri, 20 Mar 2015 20:11:52 +0000 (13:11 -0700)]
Merge branch 'rs/use-isxdigit'
Code cleanup.
* rs/use-isxdigit:
use isxdigit() for checking if a character is a hexadecimal digit
Junio C Hamano [Fri, 20 Mar 2015 20:11:51 +0000 (13:11 -0700)]
Merge branch 'mg/verify-commit'
Workarounds for certain build of GPG that triggered false breakage
in a test.
* mg/verify-commit:
t7510: do not fail when gpg warns about insecure memory
Junio C Hamano [Fri, 20 Mar 2015 20:11:50 +0000 (13:11 -0700)]
Merge branch 'km/imap-send-libcurl-options'
"git imap-send" learned to optionally talk with an IMAP server via
libcURL; because there is no other option when Git is built with
NO_OPENSSL option, use that codepath by default under such
configuration.
* km/imap-send-libcurl-options:
imap-send: use cURL automatically when NO_OPENSSL defined
Junio C Hamano [Fri, 20 Mar 2015 20:11:49 +0000 (13:11 -0700)]
Merge branch 'km/bsd-sysctl'
We now detect number of CPUs on older BSD-derived systems.
* km/bsd-sysctl:
thread-utils.c: detect CPU count on older BSD-like systems
configure: support HAVE_BSD_SYSCTL option
Junio C Hamano [Fri, 20 Mar 2015 20:11:48 +0000 (13:11 -0700)]
Merge branch 'km/bsd-shells'
Portability fixes and workarounds for shell scripts have been added
to help BSD-derived systems.
* km/bsd-shells:
t5528: do not fail with FreeBSD shell
help.c: use SHELL_PATH instead of hard-coded "/bin/sh"
git-compat-util.h: move SHELL_PATH default into header
git-instaweb: use @SHELL_PATH@ instead of /bin/sh
git-instaweb: allow running in a working tree subdirectory
Junio C Hamano [Fri, 20 Mar 2015 20:11:47 +0000 (13:11 -0700)]
Merge branch 'rs/daemon-hostname-in-strbuf'
Code in "git daemon" to parse out and hold hostnames used in
request interpolation has been simplified.
* rs/daemon-hostname-in-strbuf:
daemon: deglobalize hostname information
daemon: use strbuf for hostname info
Junio C Hamano [Fri, 20 Mar 2015 20:11:46 +0000 (13:11 -0700)]
Merge branch 'mg/detached-head-report'
"git branch" on a detached HEAD always said "(detached from xyz)",
even when "git status" would report "detached at xyz". The HEAD is
actually at xyz and haven't been moved since it was detached in
such a case, but the user cannot read what the current value of
HEAD is when "detached from" is used.
* mg/detached-head-report:
branch: name detached HEAD analogous to status
wt-status: refactor detached HEAD analysis
Junio C Hamano [Fri, 20 Mar 2015 20:11:46 +0000 (13:11 -0700)]
Merge branch 'kn/git-cd-to-empty'
"git -C '' subcmd" refused to work in the current directory, unlike
"cd ''" which silently behaves as a no-op.
* kn/git-cd-to-empty:
git: treat "git -C '<path>'" as a no-op when <path> is empty
Junio C Hamano [Fri, 20 Mar 2015 20:11:45 +0000 (13:11 -0700)]
Merge branch 'nd/versioncmp-prereleases'
The versionsort.prerelease configuration variable can be used to
specify that v1.0-pre1 comes before v1.0.
* nd/versioncmp-prereleases:
config.txt: update versioncmp.prereleaseSuffix
versionsort: support reorder prerelease suffixes
Kevin Daudt [Thu, 19 Mar 2015 22:14:08 +0000 (23:14 +0100)]
rev-list: refuse --first-parent combined with --bisect
rev-list --bisect is used by git bisect, but never together with
--first-parent. Because rev-list --bisect together with --first-parent
is not handled currently, and even leads to segfaults, refuse to use
both options together.
Because this is not supported, it makes little sense to use git log
--bisect --first parent either, because refs/heads/bad is not limited to
the first parent chain.
Helped-by: Junio C. Hamano <gitster@pobox.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Wed, 18 Mar 2015 06:30:12 +0000 (02:30 -0400)]
sha1fd_check: die when we cannot open the file
Right now we return a NULL "struct sha1file" if we encounter
an error. However, the sole caller (write_idx_file) does not
check the return value, and will segfault if we hit this
case.
One option would be to handle the error in the caller.
However, there's really nothing for it to do but die. This
code path is hit during "git index-pack --verify"; after we
verify the packfile, we check that the ".idx" we would
generate from it is byte-wise identical to what is on disk.
We hit the error (and segfault) if we can't open the .idx
file (a likely cause of this is that somebody else ran "git
repack -ad" while we were verifying). Since we can't
complete the requested verification, we really have no
choice but to die.
Furthermore, the rest of the sha1fd_* functions simply die
on errors. So if were to open the file successfully, for
example, and then hit a read error, sha1write would call
die() for us. So pushing the die() down into sha1fd_check
keeps the interface consistent.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Wilhelm Schuermann [Wed, 18 Mar 2015 18:00:13 +0000 (19:00 +0100)]
grep: fix "--quiet" overwriting current output
When grep is called with the --quiet option, the pager is initialized
despite not being used. When the pager is "less", anything output by
previous commands and not ended with a newline is overwritten:
$ echo -n aaa; echo bbb
aaabbb
$ echo -n aaa; git grep -q foo; echo bbb
bbb
This can be worked around, for example, by making sure STDOUT is not a
TTY or more directly by setting git's pager to "cat":
$ echo -n aaa; git grep -q foo > /dev/null; echo bbb
aaabbb
$ echo -n aaa; PAGER=cat git grep -q foo; echo bbb
aaabbb
But prevent calling the pager in the first place, which would also
save an unnecessary fork().
Signed-off-by: Wilhelm Schuermann <wimschuermann@googlemail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dongcan Jiang [Wed, 11 Mar 2015 02:13:02 +0000 (10:13 +0800)]
revision: forbid combining --graph and --no-walk
Because "--graph" is about connected history while --no-walk is
about discrete points, it does not make sense to allow these two
options at the same time. [1]
This change makes a few calls to "show --graph" fail in t4052, but
asking to show one commit with graph is a nonsensical thing to do.
Thus, tests on "show --graph" in t4052 have been removed [2,3].
Same tests on "show" without --graph option have already been tested
in 4052.
3 testcases have been added to test this patch.
[1]: http://article.gmane.org/gmane.comp.version-control.git/216083
[2]: http://article.gmane.org/gmane.comp.version-control.git/264950
[3]: http://article.gmane.org/gmane.comp.version-control.git/265107
Helped-By: Eric Sunshine <sunshine@sunshineco.com>
Helped-By: René Scharfe <l.s.r@web.de>
Helped-By: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Dongcan Jiang <dongcan.jiang@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Mar 2015 23:05:12 +0000 (16:05 -0700)]
Post 2.3 cyce (batch #10)
Also declare that the next one will be called v2.4 ;-)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Mar 2015 23:01:34 +0000 (16:01 -0700)]
Merge branch 'mg/doc-status-color-slot'
Documentation fixes.
* mg/doc-status-color-slot:
config,completion: add color.status.unmerged
Junio C Hamano [Tue, 17 Mar 2015 23:01:33 +0000 (16:01 -0700)]
Merge branch 'mg/status-v-v'
"git status" now allows the "-v" to be given twice to show the
differences that are left in the working tree not to be committed.
* mg/status-v-v:
commit/status: show the index-worktree diff with -v -v
t7508: test git status -v
t7508: .gitignore 'expect' and 'output' files
Junio C Hamano [Tue, 17 Mar 2015 23:01:31 +0000 (16:01 -0700)]
Merge branch 'mg/sequencer-commit-messages-always-verbatim'
"git cherry-pick" used to clean-up the log message even when it is
merely replaying an existing commit. It now replays the message
verbatim unless you are editing the message of resulting commits.
* mg/sequencer-commit-messages-always-verbatim:
sequencer: preserve commit messages
Junio C Hamano [Tue, 17 Mar 2015 23:01:30 +0000 (16:01 -0700)]
Merge branch 'sg/completion-remote'
Code simplification.
* sg/completion-remote:
completion: simplify __git_remotes()
completion: add a test for __git_remotes() helper function
Junio C Hamano [Tue, 17 Mar 2015 23:01:29 +0000 (16:01 -0700)]
Merge branch 'es/rebase-i-count-todo'
"git rebase -i" recently started to include the number of
commits in the insn sheet to be processed, but on a platform
that prepends leading whitespaces to "wc -l" output, the numbers
are shown with extra whitespaces that aren't necessary.
* es/rebase-i-count-todo:
rebase-interactive: re-word "item count" comment
rebase-interactive: suppress whitespace preceding item count
Junio C Hamano [Tue, 17 Mar 2015 23:01:28 +0000 (16:01 -0700)]
Merge branch 'ak/git-done-help-cleanup'
Code simplification.
* ak/git-done-help-cleanup:
git: make was_alias and done_help non-static
Junio C Hamano [Tue, 17 Mar 2015 23:01:27 +0000 (16:01 -0700)]
Merge branch 'rs/zip-text'
"git archive" can now be told to set the 'text' attribute in the
resulting zip archive.
* rs/zip-text:
archive-zip: mark text files in archives
Junio C Hamano [Tue, 17 Mar 2015 23:01:26 +0000 (16:01 -0700)]
Merge branch 'rs/deflate-init-cleanup'
Code simplification.
* rs/deflate-init-cleanup:
zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}
Cody A Taylor [Fri, 13 Mar 2015 02:24:50 +0000 (19:24 -0700)]
git prompt: use toplevel to find untracked files
The __git_ps1() prompt function would not show an untracked state
when all the untracked files are outside the current working
directory.
Signed-off-by: Cody A Taylor <codemister99@yahoo.com>
Helped-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Paul Mackerras [Sun, 15 Mar 2015 06:25:02 +0000 (17:25 +1100)]
gitk: Update .po files
Signed-off-by: Paul Mackerras <paulus@samba.org>
Alex Henrie [Mon, 2 Feb 2015 05:53:32 +0000 (22:53 -0700)]
gitk: l10n: Add Catalan translation
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
0xAX [Fri, 14 Nov 2014 11:05:28 +0000 (17:05 +0600)]
gitk: Fix typo in Russian translation
Signed-off-by: 0xAX <kuleshovmail@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Alex Henrie [Thu, 22 Jan 2015 08:19:39 +0000 (01:19 -0700)]
gitk: Remove tcl-format flag from a message that shouldn't have it
xgettext sees "% o" and interprets it as a placeholder for an octal
number preceded by a space. However, in this case it's not actually a
placeholder, and most translations will replace the "% o" sequence with
something else. Removing the tcl-format flag from this string prevents
tools like Poedit from freaking out when "% o" doesn't appear in the
translated string.
The corrected flag will appear in each translation's po file the next time
the translation is updated with `make update-po`.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Christoph Junghans [Tue, 13 Jan 2015 01:33:32 +0000 (18:33 -0700)]
gitk: Pass --invert-grep option down to "git log"
"git log --grep=<string>" shows only commits with messages that
match the given string, but sometimes it is useful to be able to
show only commits that do *not* have certain messages (e.g. "show
me ones that are not FIXUP commits").
Now the underlying "git log" learned the "--invert-grep" option.
The option syntactically behaves similar to "--all-match" that
requires that all of the grep strings to match and semantically
behaves the opposite---it requires that none of the grep strings to
match.
Teach "gitk" to allow users to pass it down to underlying "git log"
command by adding it to the known_view_options array.
Signed-off-by: Christoph Junghans <ottxor@gentoo.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Max Kirillov [Wed, 4 Mar 2015 03:58:18 +0000 (05:58 +0200)]
gitk: Synchronize config file writes
If several gitk instances are closed simultaneously, the savestuff
procedure can run at the same time, resulting in a conflict which may
cause losing of some of the instance's changes, failing the saving
operation or even corrupting the configuration file. This can happen,
for example, at user session closing, or at group closing of all
instances of an application which is possible in some desktop
environments.
To avoid this, make sure that only one saving operation is in
progress. It is guarded by existence of the $config_file_tmp
file. Creating the file and moving it to $config_file are both atomic
operations, so it should be reliable.
Reading does not need to be syncronized, because moving is an atomic
operation, and the $config_file always refers to a full and correct file.
But, if there is a stale $config_file_tmp file, report it at gitk start.
If such file is detected when saving, just report it abort the save, as
for other errors in saving.
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Max Kirillov [Wed, 4 Mar 2015 03:58:17 +0000 (05:58 +0200)]
gitk: Report errors in saving config file
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Max Kirillov [Wed, 4 Mar 2015 03:58:16 +0000 (05:58 +0200)]
gitk: Only write changed configuration variables
When gitk contains some changed parameter, and there is an existing
instance of gitk where the parameter is still old, it is reverted to
that old value when that instance exits.
Instead, store a parameter in config only if it has been modified in
the exiting instance. Otherwise, preserve the value which currently is in
file. This allows editing the configuration when several instances are
running, without rollback of the modification if some other
instance where the configuration was not edited is closed last.
For scalar variables, use trace(3tcl) to detect their change. Since
`trace` can send bogus events, doublecheck if the value has really
been changed, but once it is marked as changed, do not reset it back
to unchanged ever, because if user has restored the original value,
it's the decision which should be stored as well as modified value.
Treat view list especially: instead of rewriting the whole list, merge
individual views. Place old and updated views in their old places,
add new ones to the end of list. Collect modified views explicitly, in
newviewok{} and delview{}.
Do not merge geometry values. They are almost always changing because
user moves and resises windows, and there is no way to find which one of
the geometries is most desired. Just overwrite them unconditionally,
like earlier.
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Paul Mackerras <paulus@samba.org>
John Szakmeister [Sat, 14 Mar 2015 13:40:39 +0000 (09:40 -0400)]
contrib/completion: escape the forward slash in __git_match_ctag
The current definition results in an incorrect expansion of the term under zsh.
For instance "/^${1////\\/}/" under zsh with the argument "hi" results in:
/^/\/h/\/i/
This results in an output similar to this when trying to complete `git grep
chartab` under zsh:
:: git grep chartabawk: cmd. line:1: /^/\/c/\/h/\/a/\/r/\/t/\/a/\/b/ { print $1 }
awk: cmd. line:1: ^ backslash not last character on line
awk: cmd. line:1: /^/\/c/\/h/\/a/\/r/\/t/\/a/\/b/ { print $1 }
awk: cmd. line:1: ^ syntax error
Leaving the prompt in a goofy state until the user hits a key.
Escaping the literal / in the parameter expansion (using "/^${1//\//\\/}/")
results in:
/^chartab/
allowing the completion to work correctly.
This formulation also works under bash.
Signed-off-by: John Szakmeister <john@szakmeister.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Dave Olszewski [Mon, 16 Feb 2015 06:16:19 +0000 (01:16 -0500)]
push: allow --follow-tags to be set by config push.followTags
Signed-off-by: Dave Olszewski <cxreg@pobox.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 14 Mar 2015 06:11:50 +0000 (23:11 -0700)]
Sync with 2.3.3
Junio C Hamano [Sat, 14 Mar 2015 05:57:25 +0000 (22:57 -0700)]
Git 2.3.3
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sat, 14 Mar 2015 05:56:12 +0000 (22:56 -0700)]
Merge branch 'mr/doc-clean-f-f' into maint
Documentation update.
* mr/doc-clean-f-f:
Documentation/git-clean.txt: document that -f may need to be given twice
Junio C Hamano [Sat, 14 Mar 2015 05:56:11 +0000 (22:56 -0700)]
Merge branch 'ak/t5516-typofix' into maint
* ak/t5516-typofix:
t5516: correct misspelled pushInsteadOf
Junio C Hamano [Sat, 14 Mar 2015 05:56:09 +0000 (22:56 -0700)]
Merge branch 'jc/diff-test-updates' into maint
Test clean-up.
* jc/diff-test-updates:
test_ln_s_add: refresh stat info of fake symbolic links
t4008: modernise style
t/diff-lib: check exact object names in compare_diff_raw
tests: do not borrow from COPYING and README from the real source
t4010: correct expected object names
t9300: correct expected object names
t4008: correct stale comments
Junio C Hamano [Sat, 14 Mar 2015 05:56:08 +0000 (22:56 -0700)]
Merge branch 'jk/diffcore-rename-duplicate' into maint
A corrupt input to "git diff -M" can cause us to segfault.
* jk/diffcore-rename-duplicate:
diffcore-rename: avoid processing duplicate destinations
diffcore-rename: split locate_rename_dst into two functions
Junio C Hamano [Sat, 14 Mar 2015 05:56:07 +0000 (22:56 -0700)]
Merge branch 'bw/kwset-use-unsigned' into maint
The borrowed code in kwset API did not follow our usual convention
to use "unsigned char" to store values that range from 0-255.
* bw/kwset-use-unsigned:
kwset: use unsigned char to store values with high-bit set
Junio C Hamano [Sat, 14 Mar 2015 05:56:06 +0000 (22:56 -0700)]
Merge branch 'nd/grep-exclude-standard-help-fix' into maint
Description given by "grep -h" for its --exclude-standard option
was phrased poorly.
* nd/grep-exclude-standard-help-fix:
grep: correct help string for --exclude-standard
Junio C Hamano [Sat, 14 Mar 2015 05:56:05 +0000 (22:56 -0700)]
Merge branch 'mg/doc-remote-tags-or-not' into maint
"git remote add" mentioned "--tags" and "--no-tags" and was not
clear that fetch from the remote in the future will use the default
behaviour when neither is given to override it.
* mg/doc-remote-tags-or-not:
git-remote.txt: describe behavior without --tags and --no-tags
Junio C Hamano [Sat, 14 Mar 2015 05:56:04 +0000 (22:56 -0700)]
Merge branch 'mk/diff-shortstat-dirstat-fix' into maint
"git diff --shortstat --dirstat=changes" showed a dirstat based on
lines that was never asked by the end user in addition to the
dirstat that the user asked for.
* mk/diff-shortstat-dirstat-fix:
diff --shortstat --dirstat: remove duplicate output
Junio C Hamano [Sat, 14 Mar 2015 05:56:03 +0000 (22:56 -0700)]
Merge branch 'ms/submodule-update-config-doc' into maint
The interaction between "git submodule update" and the
submodule.*.update configuration was not clearly documented.
* ms/submodule-update-config-doc:
submodule: improve documentation of update subcommand
Junio C Hamano [Sat, 14 Mar 2015 05:56:02 +0000 (22:56 -0700)]
Merge branch 'jc/apply-beyond-symlink' into maint
"git apply" was not very careful about reading from, removing,
updating and creating paths outside the working tree (under
--index/--cached) or the current directory (when used as a
replacement for GNU patch).
* jc/apply-beyond-symlink:
apply: do not touch a file beyond a symbolic link
apply: do not read from beyond a symbolic link
apply: do not read from the filesystem under --index
apply: reject input that touches outside the working area
Junio C Hamano [Sat, 14 Mar 2015 05:56:00 +0000 (22:56 -0700)]
Merge branch 'rs/daemon-interpolate' into maint
"git daemon" looked up the hostname even when "%CH" and "%IP"
interpolations are not requested, which was unnecessary.
* rs/daemon-interpolate:
daemon: use callback to build interpolated path
daemon: look up client-supplied hostname lazily
Junio C Hamano [Sat, 14 Mar 2015 05:55:59 +0000 (22:55 -0700)]
Merge branch 'jk/daemon-interpolate' into maint
The "interpolated-path" option of "git daemon" inserted any string
client declared on the "host=" capability request without checking.
Sanitize and limit %H and %CH to a saner and a valid DNS name.
* jk/daemon-interpolate:
daemon: sanitize incoming virtual hostname
t5570: test git-daemon's --interpolated-path option
git_connect: let user override virtual-host we send to daemon
Nguyễn Thái Ngọc Duy [Wed, 11 Mar 2015 20:32:45 +0000 (16:32 -0400)]
*config.txt: stick to camelCase naming convention
This should improve readability. Compare "thislongname" and
"thisLongName". The following keys are left in unchanged. We can
decide what to do with them later.
- am.keepcr
- core.autocrlf .safecrlf .trustctime
- diff.dirstat .noprefix
- gitcvs.usecrlfattr
- gui.blamehistoryctx .trustmtime
- pull.twohead
- receive.autogc
- sendemail.signedoffbycc .smtpsslcertpath .suppresscc
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:57:05 +0000 (00:57 -0400)]
t5551: make EXPENSIVE test cheaper
We create 50,000 tags to check that we don't overflow the
command-line of fetch-pack. But by using run_with_cmdline_limit,
we can get the same effect with a much smaller number of
tags. This makes the test fast enough that we can drop the
EXPENSIVE prereq, which means people will actually run it.
It was not documented to do so, but this test was also the
only test of a clone-over-http that requires multiple POSTs
during the conversation. We can continue to test that by
dropping http.postbuffer to its minimum size, and checking
that we get two POSTs.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:53:07 +0000 (00:53 -0400)]
t5541: move run_with_cmdline_limit to test-lib.sh
We use this to test http pushing with a restricted
commandline. Other scripts (like t5551, which does http
fetching) will want to use it, too.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:51:15 +0000 (00:51 -0400)]
t: pass GIT_TRACE through Apache
Apache removes GIT_TRACE from the environment before running
git-http-backend. This can make it hard to debug the server
side of an http session. Let's let it through.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:50:56 +0000 (00:50 -0400)]
t: redirect stderr GIT_TRACE to descriptor 4
If you run a test script like:
GIT_TRACE=1 ./t0061-run-command.sh
you may get test failures, because some tests capture and
check the stderr output from git commands (and with
GIT_TRACE set to 1, the trace output will be included
there).
When we see GIT_TRACE set like this, we print a warning to
the user. However, we can do even better than that by just
pointing it to descriptor 4, which all tests leave connected
to the test script's stderr. That's likely what the user
intended (and any scripts that do want to see GIT_TRACE
output will set GIT_TRACE themselves).
Not only does this avoid false negatives in the tests, but
it means the user will actually see trace output for git
calls that redirect their stderr (whereas before, it was
sometimes confusingly buried in a file).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:48:48 +0000 (00:48 -0400)]
t: translate SIGINT to an exit
Right now if a test script receives SIGINT (e.g., because a
test was hanging and the user hit ^C), the shell exits
immediately. This can be annoying if the test script did any
global setup, like starting apache or git-daemon, as it will
not have an opportunity to clean up after itself. A
subsequent run of the test won't be able to start its own
daemon, and will either fail or skip the tests.
Instead, let's trap SIGINT to make sure we do a clean
shutdown, and just chain it to a normal exit (which will
trigger any cleanup).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:42:25 +0000 (00:42 -0400)]
upload-pack: do not check NULL return of lookup_unknown_object
We check whether the return value of lookup_unknown_object
is NULL, but some code paths dereference it before our
check. This turns out not to be capable of causing a
segfault, though. The lookup_unknown_object function will
never return NULL, since the whole point is to allocate an
object struct if it does not find an existing one. So the
code here is not wrong, it is just confusing. Let's just
drop the NULL check.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Fri, 13 Mar 2015 04:42:12 +0000 (00:42 -0400)]
upload-pack: fix transfer.hiderefs over smart-http
When upload-pack advertises the refs (either for a normal,
non-stateless request, or for the initial contact in a
stateless one), we call for_each_ref with the send_ref
function as its callback. send_ref, in turn, calls
mark_our_ref, which checks whether the ref is hidden, and
sets OUR_REF or HIDDEN_REF on the object as appropriate. If
it is hidden, mark_our_ref also returns "1" to signal
send_ref that the ref should not be advertised.
If we are not advertising refs, (i.e., the follow-up
invocation by an http client to send its "want" lines), we
use mark_our_ref directly as a callback to for_each_ref. Its
marking does the right thing, but when it then returns "1"
to for_each_ref, the latter interprets this as an error and
stops iterating. As a result, we skip marking all of the
refs that come lexicographically after it. Any "want" lines
from the client asking for those objects will fail, as they
were not properly marked with OUR_REF.
To solve this, we introduce a wrapper callback around
mark_our_ref which always returns 0 (even if the ref is
hidden, we want to keep iterating). We also tweak the
signature of mark_our_ref to exclude unnecessary parameters
that were present only to conform to the callback interface.
This should make it less likely for somebody to accidentally
use it as a callback in the future.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Thu, 12 Mar 2015 18:15:09 +0000 (14:15 -0400)]
tag: fix some mis-organized options in "-h" listing
Running "git tag -h" currently prints:
[...]
Tag creation options
[...]
--column[=<style>] show tag list in columns
--sort <type> sort tags
Tag listing options
--contains <commit> print only tags that contain the commit
--points-at <object> print only tags of the object
The "--column" and "--sort" options should go under the "Tag listing" group.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller [Mon, 9 Mar 2015 16:58:24 +0000 (09:58 -0700)]
builtin/help.c: fix memory leak
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller [Tue, 10 Mar 2015 23:51:48 +0000 (16:51 -0700)]
bundle.c: fix memory leak
There was one continue statement without an accompanying `free(ref)`.
Instead of adding that, replace all the free&&continue with a goto
just after writing the refs, where we'd do the free anyway and then
reloop.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Mon, 9 Mar 2015 22:46:54 +0000 (23:46 +0100)]
use isxdigit() for checking if a character is a hexadecimal digit
Use the standard function isxdigit() to make the intent clearer and
avoid using magic constants.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller [Mon, 9 Mar 2015 16:58:22 +0000 (09:58 -0700)]
connect.c: do not leak "conn" after showing diagnosis
When git_connect() is called to see how the URL is parsed for
debugging purposes with CONNECT_DIAG_URL set, the variable conn is
leaked. At this point in the codeflow, it only has its memory and
no other resource is associated with it, so it is sufficient to
clean it up by just freeing it.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael J Gruber [Tue, 10 Mar 2015 16:11:09 +0000 (17:11 +0100)]
config,completion: add color.status.unmerged
Reported-by: "Mladen B." <mladen074@gmail.com>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kyle J. McKay [Mon, 9 Mar 2015 20:03:01 +0000 (13:03 -0700)]
t7510: do not fail when gpg warns about insecure memory
Depending on how gpg was built, it may issue the following
message to stderr when run:
Warning: using insecure memory!
When the test is collecting gpg output it is therefore not
enough to just match on a "gpg: " prefix it must also match
on a "Warning: " prefix wherever it needs to match lines
that have been produced by gpg.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Acked-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kyle J. McKay [Sun, 8 Mar 2015 15:37:50 +0000 (08:37 -0700)]
t5528: do not fail with FreeBSD shell
The FreeBSD shell converts this expression:
git ${1:+-c push.default="$1"} push
to this when "$1" is not empty:
git "-c push.default=$1" push
which causes git to fail. To avoid this we simply break up the
expansion into two parts so that the whitespace which creates
two arguments instead of one is outside the ${...} like so:
git ${1:+-c} ${1:+push.default="$1"} push
This has the desired effect on all platforms allowing the test
to pass on FreeBSD.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kyle J. McKay [Sun, 8 Mar 2015 05:13:55 +0000 (21:13 -0800)]
imap-send: use cURL automatically when NO_OPENSSL defined
If both USE_CURL_FOR_IMAP_SEND and NO_OPENSSL are defined do
not force the user to add --curl to get a working git imap-send
command.
Instead automatically select --curl and warn and ignore the
--no-curl option. And while we're in there, correct the
warning message when --curl is requested but not supported.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 10 Mar 2015 13:53:21 +0000 (14:53 +0100)]
log: decorate HEAD with branch name
Currently, log decorations do not indicate which branch is checked out
and whether HEAD is detached.
When branch foo is checked out, change the "HEAD, foo" part of the
decorations to "HEAD -> foo". This serves to indicate both ref
decorations (helped by the spacing) as well as their relationshsip.
As a consequence, "HEAD" without any " -> " denotes a detached HEAD now.
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 10 Mar 2015 22:17:37 +0000 (15:17 -0700)]
Merge branch 'jc/decorate-leaky-separator-color' into HEAD
* jc/decorate-leaky-separator-color:
log --decorate: do not leak "commit" color into the next item
Documentation/config.txt: simplify boolean description in the syntax section
Documentation/config.txt: describe 'color' value type in the "Values" section
Documentation/config.txt: have a separate "Values" section
Documentation/config.txt: describe the structure first and then meaning
Documentation/config.txt: explain multi-valued variables once
Documentation/config.txt: avoid unnecessary negation
Kyle J. McKay [Sun, 8 Mar 2015 07:14:37 +0000 (23:14 -0800)]
thread-utils.c: detect CPU count on older BSD-like systems
Not all systems support using sysconf to detect the number
of available CPU cores. Older BSD and BSD-derived systems
only provide the information via the sysctl function.
If HAVE_BSD_SYSCTL is defined attempt to retrieve the number
of available CPU cores using the sysctl function.
If HAVE_BSD_SYSCTL is not defined or the sysctl function
fails, we still attempt to get the information via sysconf.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kyle J. McKay [Sun, 8 Mar 2015 07:14:36 +0000 (23:14 -0800)]
configure: support HAVE_BSD_SYSCTL option
On BSD-compatible systems some information such as the number
of available CPUs may only be available via the sysctl function.
Add support for a HAVE_BSD_SYSCTL option complete with autoconf
support and include the sys/syctl.h header when the option is
enabled to make the sysctl function available.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kyle J. McKay [Sun, 8 Mar 2015 05:08:00 +0000 (21:08 -0800)]
help.c: use SHELL_PATH instead of hard-coded "/bin/sh"
If the user has set SHELL_PATH in the Makefile then we
should respect that value and use it.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Kyle J. McKay [Sun, 8 Mar 2015 05:07:59 +0000 (21:07 -0800)]
git-compat-util.h: move SHELL_PATH default into header
If SHELL_PATH is not defined we use "/bin/sh". However,
run-command.c is not the only file that needs to use
the default value so move it into a common header.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>