summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-12-02launch_editor: propagate signals from editor to gitLibravatar Jeff King1-1/+4
We block SIGINT and SIGQUIT while the editor runs so that git is not killed accidentally by a stray "^C" meant for the editor or its subprocesses. This works because most editors ignore SIGINT. However, some editor wrappers, like emacsclient, expect to die due to ^C. We detect the signal death in the editor and properly exit, but not before writing a useless error message to stderr. Instead, let's notice when the editor was killed by a terminal signal and just raise the signal on ourselves. This skips the message and looks to our parent like we received SIGINT ourselves. The end effect is that if the user's editor ignores SIGINT, we will, too. And if it does not, then we will behave as if we did not ignore it. That should make all users happy. Note that in the off chance that another part of git has ignored SIGINT while calling launch_editor, we will still properly detect and propagate the failed return code from the editor (i.e., the worst case is that we generate the useless error, not fail to notice the editor's death). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02run-command: do not warn about child death from terminalLibravatar Jeff King1-1/+2
SIGINT and SIGQUIT are not generally interesting signals to the user, since they are typically caused by them hitting "^C" or otherwise telling their terminal to send the signal. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02launch_editor: ignore terminal signals while editor has controlLibravatar Paul Fox1-1/+8
The user's editor likely catches SIGINT (ctrl-C). but if the user spawns a command from the editor and uses ctrl-C to kill that command, the SIGINT will likely also kill git itself (depending on the editor, this can leave the terminal in an unusable state). Let's ignore it while the editor is running, and do the same for SIGQUIT, which many editors also ignore. This matches the behavior if we were to use system(3) instead of run-command. Signed-off-by: Paul Fox <pgf@foxharp.boston.ma.us> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02launch_editor: refactor to use start/finish_commandLibravatar Jeff King1-1/+9
The launch_editor function uses the convenient run_command_* interface. Let's use the more flexible start_command and finish_command functions, which will let us manipulate the parent state while we're waiting for the child to finish. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-12-02run-command: drop silent_exec_failure arg from wait_or_whineLibravatar Jeff King1-4/+3
We do not actually use this parameter; instead we complain from the child itself (for fork/exec) or from start_command (if we are using spawn on Windows). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-11-04Merge branch 'tj/maint-doc-commit-sign'Libravatar Jeff King1-1/+5
* tj/maint-doc-commit-sign: Add -S, --gpg-sign option to manpage of "git commit"
2012-11-04Merge branch 'pp/maint-doc-pager-config'Libravatar Jeff King1-4/+4
* pp/maint-doc-pager-config: Documentation: improve the example of overriding LESS via core.pager
2012-11-04Merge branch 'km/maint-doc-git-reset'Libravatar Jeff King1-4/+4
* km/maint-doc-git-reset: doc: git-reset: make "<mode>" optional
2012-11-04Merge branch 'tb/maint-t9200-case-insensitive'Libravatar Jeff King1-1/+1
* tb/maint-t9200-case-insensitive: Fix t9200 on case insensitive file systems
2012-11-04Merge branch 'rf/maint-mailmap-off-by-one'Libravatar Jeff King1-1/+1
* rf/maint-mailmap-off-by-one: mailmap: avoid out-of-bounds memory access
2012-11-04Merge branch 'gb/maint-doc-svn-log-window-size'Libravatar Jeff King1-0/+7
* gb/maint-doc-svn-log-window-size: Document git-svn fetch --log-window-size parameter
2012-11-04Merge branch 'sz/maint-submodule-reference-arg'Libravatar Jeff King1-1/+0
* sz/maint-submodule-reference-arg: submodule add: fix handling of --reference=<repo> option
2012-11-04Merge branch 'sl/maint-configure-messages'Libravatar Jeff King1-2/+2
Minor message fixes for the configure script. * sl/maint-configure-messages: configure: fix some output message
2012-11-04Merge branch 'po/maint-refs-replace-docs'Libravatar Jeff King1-0/+6
The refs/replace hierarchy was not mentioned in the repository-layout docs. * po/maint-refs-replace-docs: Doc repository-layout: Show refs/replace
2012-11-04Merge branch 'ph/pull-rebase-detached'Libravatar Jeff King1-0/+1
Avoids spewing error messages when using "pull --rebase" on a detached HEAD. * ph/pull-rebase-detached: git-pull: Avoid merge-base on detached head
2012-11-04Merge branch 'mm/maint-doc-remote-tracking'Libravatar Jeff King4-6/+6
We long ago hyphenated "remote-tracking branch"; this catches some new instances added since then. * mm/maint-doc-remote-tracking: Documentation: remote tracking branch -> remote-tracking branch
2012-10-29Add -S, --gpg-sign option to manpage of "git commit"Libravatar Tom Jones1-1/+5
git commit -S, --gpg-sign was mentioned in the program's help message, but not in the manpage. This adds an equivalent entry for the option in the manpage. Signed-off-by: Tom Jones <tom@oxix.org> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29Merge branch 'rs/branch-del-symref'Libravatar Jeff King2-26/+68
A symbolic ref refs/heads/SYM was not correctly removed with "git branch -d SYM"; the command removed the ref pointed by SYM instead. * rs/branch-del-symref: branch: show targets of deleted symrefs, not sha1s branch: skip commit checks when deleting symref branches branch: delete symref branch, not its target branch: factor out delete_branch_config() branch: factor out check_branch_commit()
2012-10-29Merge branch 'nd/status-long'Libravatar Jeff King3-6/+30
Allow an earlier "--short" option on the command line to be countermanded with the "--long" option for "git status" and "git commit". * nd/status-long: status: add --long output format option
2012-10-29Merge branch 'jk/sh-setup-in-filter-branch'Libravatar Jeff King3-54/+59
Refactoring to avoid code duplication in shell scripts. * jk/sh-setup-in-filter-branch: filter-branch: use git-sh-setup's ident parsing functions git-sh-setup: refactor ident-parsing functions
2012-10-29Merge branch 'nd/grep-true-path'Libravatar Jeff King4-17/+51
"git grep -e pattern <tree>" asked the attribute system to read "<tree>:.gitattributes" file in the working tree, which was nonsense. * nd/grep-true-path: grep: stop looking at random places for .gitattributes
2012-10-29Merge branch 'jk/maint-http-init-not-in-result-handler'Libravatar Jeff King3-14/+12
Further clean-up to the http codepath that picks up results after cURL library is done with one request slot. * jk/maint-http-init-not-in-result-handler: http: do not set up curl auth after a 401 remote-curl: do not call run_slot repeatedly
2012-10-29Merge branch 'jc/grep-pcre-loose-ends'Libravatar Jeff King7-129/+225
"git log -F -E --grep='<ere>'" failed to use the given <ere> pattern as extended regular expression, and instead looked for the string literally. The early part of this series is a fix for it; the latter part teaches log to respect the grep.* configuration. * jc/grep-pcre-loose-ends: log: honor grep.* configuration log --grep: accept --basic-regexp and --perl-regexp log --grep: use the same helper to set -E/-F options as "git grep" revisions: initialize revs->grep_filter using grep_init() grep: move pattern-type bits support to top-level grep.[ch] grep: move the configuration parsing logic to grep.[ch] builtin/grep.c: make configuration callback more reusable
2012-10-29Merge branch 'jl/submodule-add-by-name'Libravatar Jeff King5-14/+121
If you remove a submodule, in order to keep the repository so that "git checkout" to an older commit in the superproject history can resurrect the submodule, the real repository will stay in $GIT_DIR of the superproject. A later "git submodule add $path" to add a different submodule at the same path will fail. Diagnose this case a bit better, and if the user really wants to add an unrelated submodule at the same path, give the "--name" option to give it a place in $GIT_DIR of the superproject that does not conflict with the original submodule. * jl/submodule-add-by-name: submodule add: Fail when .git/modules/<name> already exists unless forced Teach "git submodule add" the --name option
2012-10-29Merge branch 'jl/submodule-rm'Libravatar Jeff King5-15/+550
"git rm submodule" cannot blindly remove a submodule directory as its working tree may have local changes, and worse yet, it may even have its repository embedded in it. Teach it some special cases where it is safe to remove a submodule, specifically, when there is no local changes in the submodule working tree, and its repository is not embedded in its working tree but is elsewhere and uses the gitfile mechanism to point at it. * jl/submodule-rm: submodule: teach rm to remove submodules unless they contain a git directory
2012-10-29Documentation: improve the example of overriding LESS via core.pagerLibravatar Patrick Palka1-4/+4
You can override an option set in the LESS variable by simply prefixing the command line option with `-+`. This is more robust than the previous example if the default LESS options are to ever change. Signed-off-by: Patrick Palka <patrick@parcs.ath.cx> Signed-off-by: Jeff King <peff@peff.net>
2012-10-29doc: git-reset: make "<mode>" optionalLibravatar Krzysztof Mazur1-4/+4
The git-reset's "<mode>" is an optional argument, however it was documented as required. The "<mode>" is documented as one of: --soft, --mixed, --hard, --merge or --keep, so "<mode>" should be used instead of "--<mode>". Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net> Signed-off-by: Jeff King <peff@peff.net>
2012-10-28Fix t9200 on case insensitive file systemsLibravatar Torsten Bögershausen1-1/+1
t9200 defines $CVSROOT where cvs should init its repository $CVSROOT is set to $PWD/cvsroot. cvs init is supposed to create the repository inside $PWD/cvsroot/CVSROOT "cvs init" (e.g. version 1.11.23) checks if the last element of the path is "CVSROOT", and if a directory with e.g. $PWD/cvsroot/CVSROOT already exists. For such a $CVSROOT cvs refuses to init a repository here: "Cannot initialize repository under existing CVSROOT: On a case insenstive file system cvsroot and CVSROOT are the same directories and t9200 fails. Solution: use $PWD/tmpcvsroot instead of cvsroot $PWD/cvsroot Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Jeff King <peff@peff.net>
2012-10-28mailmap: avoid out-of-bounds memory accessLibravatar Romain Francoise1-1/+1
AddressSanitizer (http://clang.llvm.org/docs/AddressSanitizer.html) complains of a one-byte buffer underflow in parse_name_and_email() while running the test suite. And indeed, if one of the lines in the mailmap begins with '<', we dereference the address just before the beginning of the buffer when looking for whitespace to remove, before checking that we aren't going too far. So reverse the order of the tests to make sure that we don't read outside the buffer. Signed-off-by: Romain Francoise <romain@orebokech.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-26submodule add: fix handling of --reference=<repo> optionLibravatar Stefan Zager1-1/+0
Doing a shift here is wrong because there is no extra argument to consume when "--reference=<repo>" is used (note the '=' instead of a space). Signed-off-by: Stefan Zager <szager@google.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-26Document git-svn fetch --log-window-size parameterLibravatar Gunnlaugur Þór Briem1-0/+7
The --log-window-size parameter to git-svn fetch is undocumented. Minimally describe what it does and why the user might change it. Signed-off-by: Gunnlaugur Þór Briem <gunnlaugur@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-25configure: fix some output messageLibravatar Stefano Lattarini1-2/+2
Before this change, output from ./configure could contain botched wording like this: checking Checking for POSIX Threads with '-pthread'... yes instead of the intended: checking for POSIX Threads with '-pthread'... yes Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-25Doc repository-layout: Show refs/replaceLibravatar Philip Oakley1-0/+6
Signed-off-by: Philip Oakley <philipoakley@iee.org> Signed-off-by: Jeff King <peff@peff.net>
2012-10-25Documentation: remote tracking branch -> remote-tracking branchLibravatar Matthieu Moy4-6/+6
This change was already done by 0e615b252f3 (Matthieu Moy, Tue Nov 2 2010, Replace "remote tracking" with "remote-tracking"), but new instances of remote tracking (without dash) were introduced in the meantime. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Jeff King <peff@peff.net>
2012-10-25Merge branch 'jk/strbuf-detach-always-non-null'Libravatar Jeff King1-1/+3
* jk/strbuf-detach-always-non-null: strbuf: always return a non-NULL value from strbuf_detach
2012-10-25Merge branch 'js/mingw-fflush-errno'Libravatar Jeff King3-6/+26
* js/mingw-fflush-errno: maybe_flush_or_die: move a too-loose Windows specific error
2012-10-25Merge branch 'da/mergetools-p4'Libravatar Jeff King1-0/+25
* da/mergetools-p4: mergetools/p4merge: Handle "/dev/null"
2012-10-25Merge branch 'jc/test-say-color-avoid-echo-escape'Libravatar Jeff King1-1/+1
Recent nd/wildmatch series was the first to reveal this ancient bug in the test scaffolding. * jc/test-say-color-avoid-echo-escape: test-lib: Fix say_color () not to interpret \a\b\c in the message
2012-10-25Merge branch 'nd/attr-match-optim'Libravatar Jeff King1-8/+13
Trivial and obvious optimization for finding attributes that match a given path. * nd/attr-match-optim: attr: avoid searching for basename on every match attr: avoid strlen() on every match
2012-10-25Merge branch 'jk/peel-ref'Libravatar Jeff King5-36/+19
Speeds up "git upload-pack" (what is invoked by "git fetch" on the other side of the connection) by reducing the cost to advertise the branches and tags that are available in the repository. * jk/peel-ref: upload-pack: use peel_ref for ref advertisements peel_ref: check object type before loading peel_ref: do not return a null sha1 peel_ref: use faster deref_tag_noverify
2012-10-25Merge branch 'bw/config-lift-variable-name-length-limit'Libravatar Jeff King1-30/+29
The configuration parser had an unnecessary hardcoded limit on variable names that was not checked consistently. Lift the limit. * bw/config-lift-variable-name-length-limit: Remove the hard coded length limit on variable names in config files
2012-10-25Merge branch 'fa/remote-svn'Libravatar Jeff King16-38/+655
A GSoC project. * fa/remote-svn: Add a test script for remote-svn remote-svn: add marks-file regeneration Add a svnrdump-simulator replaying a dump file for testing remote-svn: add incremental import remote-svn: Activate import/export-marks for fast-import Create a note for every imported commit containing svn metadata vcs-svn: add fast_export_note to create notes Allow reading svn dumps from files via file:// urls remote-svn, vcs-svn: Enable fetching to private refs When debug==1, start fast-import with "--stats" instead of "--quiet" Add documentation for the 'bidi-import' capability of remote-helpers Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability Add argv_array_detach and argv_array_free_detached Add svndump_init_fd to allow reading dumps from arbitrary FDs Add git-remote-testsvn to Makefile Implement a remote helper for svn in C
2012-10-25Merge branch 'jm/diff-context-config'Libravatar Jeff King3-1/+104
Teaches a new configuration variable to "git diff" Porcelain and its friends. * jm/diff-context-config: t4055: avoid use of sed 'a' command diff: diff.context configuration gives default to -U
2012-10-25Merge branch 'jk/no-more-pre-exec-callback'Libravatar Jeff King3-29/+0
Removes a workaround for buggy version of less older than version 406. * jk/no-more-pre-exec-callback: pager: drop "wait for output to run less" hack
2012-10-25git-pull: Avoid merge-base on detached headLibravatar Phil Hord1-0/+1
git pull --rebase does some clever tricks to find the base for $upstream, but it forgets that we may not have any branch at all. When this happens, git merge-base reports its "usage" help in the middle of an otherwise successful rebase operation, because git-merge is called with one too few parameters. Since we do not need the merge-base trick in the case of a detached HEAD, detect this condition and bypass the clever trick and the usage noise. Signed-off-by: Phil Hord <hordp@cisco.com> Signed-off-by: Jeff King <peff@peff.net>
2012-10-21Git 1.8.0Libravatar Junio C Hamano3-10/+19
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-10-18filter-branch: use git-sh-setup's ident parsing functionsLibravatar Jeff King2-35/+16
This saves us some code, but it also reduces the number of processes we start for each filtered commit. Since we can parse both author and committer in the same sed invocation, we save one process. And since the new interface avoids tr, we save 4 processes. It also avoids using "tr", which has had some odd portability problems reported with from Solaris's xpg6 version. We also tweak one of the tests in t7003 to double-check that we are properly exporting the variables (because test-lib.sh exports GIT_AUTHOR_NAME, it will be automatically exported in subprograms. We override this to make sure that filter-branch handles it properly itself). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-10-18git-sh-setup: refactor ident-parsing functionsLibravatar Jeff King1-19/+43
The only ident-parsing function we currently provide is get_author_ident_from_commit. This is not very flexible for two reasons: 1. It takes a commit as an argument, and can't read from commit headers saved on disk. 2. It will only parse authors, not committers. This patch provides a more flexible interface which will parse multiple idents from a commit provide on stdin. We can easily use it as a building block for the current function to retain compatibility. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-10-18status: add --long output format optionLibravatar Jeff King3-6/+30
You can currently set the output format to --short or --porcelain. There is no --long, because we default to it already. However, you may want to override an alias that uses "--short" to get back to the default. This requires a little bit of refactoring, because currently we use STATUS_FORMAT_LONG internally to mean the same as "the user did not specify anything". By expanding the enum to include STATUS_FORMAT_NONE, we can distinguish between the implicit and explicit cases. This effects these conditions: 1. The user has asked for NUL termination. With NONE, we currently default to turning on the porcelain mode. With an explicit --long, we would in theory use NUL termination with the long mode, but it does not support it. So we can just complain and die. 2. When an output format is given to "git commit", we default to "--dry-run". This behavior would now kick in when "--long" is given, too. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-10-18branch: show targets of deleted symrefs, not sha1sLibravatar René Scharfe2-11/+13
git branch reports the abbreviated hash of the head commit of a deleted branch to make it easier for a user to undo the operation. For symref branches this doesn't help. Print the symref target instead for them. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>