summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2009-01-21pager: do wait_for_pager on signal deathLibravatar Jeff King1-0/+9
Since ea27a18 (spawn pager via run_command interface), the original git process actually does git work, and the pager is a child process (actually, on Windows it has always been that way, since Windows lacks fork). After spawning the pager, we register an atexit() handler that waits for the pager to finish. Unfortunately, that handler does not always run. In particular, if git is killed by a signal, then we exit immediately. The calling shell then thinks that git is done; however, the pager is still trying to run and impact the terminal. The result can be seen by running a long git process with a pager (e.g., "git log -p") and hitting ^C. Depending on your config, you should see the shell prompt, but pressing a key causes the pager to do any terminal de-initialization sequence. This patch just intercepts any death-dealing signals and waits for the pager before dying. Under typical less configuration, that means hitting ^C will cause git to stop generating output, but the pager will keep running. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-21refactor signal handling for cleanup functionsLibravatar Jeff King8-13/+17
The current code is very inconsistent about which signals are caught for doing cleanup of temporary files and lock files. Some callsites checked only SIGINT, while others checked a variety of death-dealing signals. This patch factors out those signals to a single function, and then calls it everywhere. For some sites, that means this is a simple clean up. For others, it is an improvement in that they will now properly clean themselves up after a larger variety of signals. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-21chain kill signals for cleanup functionsLibravatar Jeff King12-19/+125
If a piece of code wanted to do some cleanup before exiting (e.g., cleaning up a lockfile or a tempfile), our usual strategy was to install a signal handler that did something like this: do_cleanup(); /* actual work */ signal(signo, SIG_DFL); /* restore previous behavior */ raise(signo); /* deliver signal, killing ourselves */ For a single handler, this works fine. However, if we want to clean up two _different_ things, we run into a problem. The most recently installed handler will run, but when it removes itself as a handler, it doesn't put back the first handler. This patch introduces sigchain, a tiny library for handling a stack of signal handlers. You sigchain_push each handler, and use sigchain_pop to restore whoever was before you in the stack. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-21diff: refactor tempfile cleanup handlingLibravatar Jeff King1-52/+55
There are two pieces of code that create tempfiles for diff: run_external_diff and run_textconv. The former cleans up its tempfiles in the face of premature death (i.e., by die() or by signal), but the latter does not. After this patch, they will both use the same cleanup routines. To make clear what the change is, let me first explain what happens now: - run_external_diff uses a static global array of 2 diff_tempfile structs (since it knows it will always need exactly 2 tempfiles). It calls prepare_temp_file (which doesn't know anything about the global array) on each of the structs, creating the tempfiles that need to be cleaned up. It then registers atexit and signal handlers to look through the global array and remove the tempfiles. If it succeeds, it calls the handler manually (which marks the tempfile structs as unused). - textconv has its own tempfile struct, which it allocates using prepare_temp_file and cleans up manually. No signal or atexit handlers. The new code moves the installation of cleanup handlers into the prepare_temp_file function. Which means that that function now has to understand that there is static tempfile storage. So what happens now is: - run_external_diff calls prepare_temp_file - prepare_temp_file calls claim_diff_tempfile, which allocates an unused slot from our global array - prepare_temp_file installs (if they have not already been installed) atexit and signal handlers for cleanup - prepare_temp_file sets up the tempfile as usual - prepare_temp_file returns a pointer to the allocated tempfile The advantage being that run_external_diff no longer has to care about setting up cleanup handlers. Now by virtue of calling prepare_temp_file, run_textconv gets the same benefit, as will any future users of prepare_temp_file. There are also a few side benefits to the specific implementation: - we now install cleanup handlers _before_ allocating the tempfile, closing a race which could leave temp cruft - when allocating a slot in the global array, we will now detect a situation where the old slots were not properly vacated (i.e., somebody forgot to call remove upon leaving the function). In the old code, such a situation would silently overwrite the tempfile names, meaning we would forget to clean them up. The new code dies with a bug warning. - we make sure only to install the signal handler once. This isn't a big deal, since we are just overwriting the old handler, but will become an issue when a later patch converts the code to use sigchain Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-21Windows: Fix signal numbersLibravatar Johannes Sixt1-6/+6
We had defined some SIG_FOO macros that appear in the code, but that are not supported on Windows, in order to make the code compile. But a subsequent change will assert that a signal number is non-zero. We now use the signal numbers that are commonly used on POSIX systems. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-11Makefile: clean up TEST_PROGRAMS definitionLibravatar Jeff King1-1/+8
We try to keep lines under 80 characters, not to mention that sticking a bunch of stuff on one line makes diffs messier. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-10t7501-commit.sh: explicitly check that -F prevents invoking the editorLibravatar Adeodato Simó2-4/+21
The "--signoff" test case in t7500-commit.sh was setting VISUAL while using -F -, which indeed tested that the editor is not spawned with -F. However, having it there was confusing, since there was no obvious reason to the casual reader for it to be there. This commits removes the setting of VISUAL from the --signoff test, and adds in t7501-commit.sh a dedicated test case, where the rest of tests for -F are. Signed-off-by: Adeodato Simó <dato@net.com.org.es> Okay-then-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-10bash completion: Use 'git add' completions for 'git stage'Libravatar Lee Marlow1-0/+1
Signed-off-by: Lee Marlow <lee.marlow@gmail.com> Trivially-Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-10bash completion: Add '--intent-to-add' long option for 'git add'Libravatar Lee Marlow1-1/+1
Signed-off-by: Lee Marlow <lee.marlow@gmail.com> Trivially-Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-10filter-branch: add git_commit_non_empty_tree and --prune-empty.Libravatar Pierre Habouzit3-1/+50
git_commit_non_empty_tree is added to the functions that can be run from commit filters. Its effect is to commit only commits actually touching the tree and that are not merge points either. The option --prune-empty is added. It defaults the commit-filter to 'git_commit_non_empty_tree "$@"', and can be used with any other combination of filters, except --commit-hook that must used 'git_commit_non_empty_tree "$@"' where one puts 'git commit-tree "$@"' usually to achieve the same result. Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-07Merge branch 'mh/maint-sendmail-cc-doc'Libravatar Junio C Hamano1-0/+1
* mh/maint-sendmail-cc-doc: doc/git-send-email: mention sendemail.cc config variable
2009-01-07Merge branch 'rs/diff-ihc'Libravatar Junio C Hamano7-1/+106
* rs/diff-ihc: diff: add option to show context between close hunks Conflicts: Documentation/diff-options.txt
2009-01-07Merge branch 'js/maint-merge-recursive-r-d-conflict'Libravatar Junio C Hamano2-0/+28
* js/maint-merge-recursive-r-d-conflict: merge-recursive: mark rename/delete conflict as unmerged
2009-01-07Merge branch 'mk/gitweb-feature'Libravatar Junio C Hamano1-32/+9
* mk/gitweb-feature: gitweb: unify boolean feature subroutines
2009-01-07Merge branch 'cb/merge-recursive-fix'Libravatar Junio C Hamano2-0/+119
* cb/merge-recursive-fix: merge-recursive: do not clobber untracked working tree garbage modify/delete conflict resolution overwrites untracked file
2009-01-07Merge branch 'kk/maint-http-push'Libravatar Junio C Hamano1-6/+19
* kk/maint-http-push: http-push: support full URI in handle_remote_ls_ctx()
2009-01-07Merge branch 'mv/um-pdf'Libravatar Junio C Hamano3-0/+22
* mv/um-pdf: Add support for a pdf version of the user manual
2009-01-07Merge branch 'jn/gitweb-blame'Libravatar Junio C Hamano1-35/+51
* jn/gitweb-blame: gitweb: cache $parent_commit info in git_blame() gitweb: A bit of code cleanup in git_blame() gitweb: Move 'lineno' id from link to row element in git_blame
2009-01-07Merge branch 'wp/add-p-goto'Libravatar Junio C Hamano1-0/+67
* wp/add-p-goto: Add 'g' command to go to a hunk Add subroutine to display one-line summary of hunks
2009-01-06strbuf: instate cleanup rule in case of non-memory errorsLibravatar René Scharfe2-6/+22
Make all strbuf functions that can fail free() their memory on error if they have allocated it. They don't shrink buffers that have been grown, though. This allows for easier error handling, as callers only need to call strbuf_release() if A) the command succeeded or B) if they would have had to do so anyway because they added something to the strbuf themselves. Bonus hunk: document strbuf_readlink. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-06Merge branch 'maint'Libravatar Junio C Hamano1-1/+1
* maint: README: tutorial.txt is now called gittutorial.txt
2009-01-06Merge branch 'maint-1.6.0' into maintLibravatar Junio C Hamano1-1/+1
* maint-1.6.0: README: tutorial.txt is now called gittutorial.txt
2009-01-06Merge branch 'maint-1.5.6' into maint-1.6.0Libravatar Junio C Hamano1-1/+1
* maint-1.5.6: README: tutorial.txt is now called gittutorial.txt
2009-01-06README: tutorial.txt is now called gittutorial.txtLibravatar Joey Hess1-1/+1
Signed-off-by: Joey Hess <joey@gnu.kitenet.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05Merge branch 'maint'Libravatar Junio C Hamano3-5/+8
* maint: Be consistent in switch usage for tar Use capitalized names where appropriate fast-export: print usage when no options specified
2009-01-05remove trailing LF in die() messagesLibravatar Alexander Potashev16-27/+27
LF at the end of format strings given to die() is redundant because die already adds one on its own. Signed-off-by: Alexander Potashev <aspotashev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05Be consistent in switch usage for tarLibravatar Henrik Austad1-1/+1
tar handles switches with and witout preceding '-', but the documentation should be consistent nonetheless. Signed-off-by: Henrik Austad <henrik@austad.us> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05Use capitalized names where appropriateLibravatar Henrik Austad2-4/+4
The Linux kernel and Emacs are both spelled capitalized Signed-off-by: Henrik Austad <henrik@austad.us> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05bash: add '--merge' to 'git reset'Libravatar SZEDER Gábor1-1/+1
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05show <tag>: reuse pp_user_info() instead of duplicating codeLibravatar Johannes Schindelin1-15/+6
We used to extract the tagger information "by hand" in "git show <tag>", but the function pp_user_info() already does that. Even better: it respects the commit_format and date_format specified by the user. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-05gitweb: use href() when generating URLs in OPMLLibravatar Giuseppe Bilotta1-2/+2
Since the OPML project list view was hand-coding the RSS and HTML URLs, it didn't respect global options such as use_pathinfo. Make it use href() to ensure consistency with the rest of the gitweb setup. Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> Acked-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-03fast-export: print usage when no options specifiedLibravatar Miklos Vajna1-0/+3
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-03Merge branch 'jc/maint-do-not-switch-to-non-commit'Libravatar Junio C Hamano2-1/+5
* jc/maint-do-not-switch-to-non-commit: git checkout: do not allow switching to a tree-ish that is not a commit
2009-01-03Merge branch 'ap/maint-apply-modefix'Libravatar Junio C Hamano2-1/+65
* ap/maint-apply-modefix: builtin-apply: prevent non-explicit permission changes
2009-01-03git checkout: do not allow switching to a tree-ish that is not a commitLibravatar Junio C Hamano2-1/+5
"git checkout -b newbranch $commit^{tree}" mistakenly created a new branch rooted at the current HEAD, because in that case, the two structure fields used to see if the command was invoked without any argument (hence it needs to default to checking out the HEAD) were populated incorrectly. Upon seeing a command line argument that we took as a rev, we should store that string in new.name, even if that does not name a commit. This will correctly trigger the existing safety logic. Signed-off-by: Junio C Hamano <gitster@pobox.com> Acked-by: Daniel Barkalow <barkalow@iabervon.org>
2009-01-02builtin-apply: prevent non-explicit permission changesLibravatar Junio C Hamano2-1/+65
A git patch that does not change the executable bit records the mode bits on its "index" line. "git apply" used to interpret this mode exactly the same way as it interprets the mode recorded on "new mode" line, as the wish by the patch submitter to set the mode to the one recorded on the line. The reason the mode does not agree between the submitter and the receiver in the first place is because there is _another_ commit that only appears on one side but not the other since their histories diverged, and that commit changes the mode. The patch has "index" line but not "new mode" line because its change is about updating the contents without affecting the mode. The application of such a patch is an explicit wish by the submitter to only cherry-pick the commit that updates the contents without cherry-picking the commit that modifies the mode. Viewed this way, the current behaviour is problematic, even though the command does warn when the mode of the path being patched does not match this mode, and a careful user could detect this inconsistencies between the patch submitter and the patch receiver. This changes the semantics of the mode recorded on the "index" line; instead of interpreting it as the submitter's wish to set the mode to the recorded value, it merely informs what the mode submitter happened to have, and the presense of the "index" line is taken as submitter's wish to keep whatever the mode is on the receiving end. This is based on the patch originally done by Alexander Potashev with a minor fix; the tests are mine. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-02git wrapper: Make while loop more reader-friendlyLibravatar Johannes Schindelin1-3/+2
It is not a good practice to prefer performance over readability in something as performance uncritical as finding the trailing slash of argv[0]. So avoid head-scratching by making the loop user-readable, and not hyper-performance-optimized. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-01Merge branch 'cb/mergetool'Libravatar Junio C Hamano3-31/+100
* cb/mergetool: mergetool: Don't keep temporary merge files unless told to mergetool: Add prompt to continue after failing to merge a file Add -y/--no-prompt option to mergetool Fix some tab/space inconsistencies in git-mergetool.sh
2009-01-01Merge branch 'maint'Libravatar Junio C Hamano1-2/+2
* maint: Documentation/git-tag.txt: minor typo and grammar fix
2009-01-01Documentation/git-tag.txt: minor typo and grammar fixLibravatar jidanni@jidanni.org1-2/+2
Signed-off-by: jidanni <jidanni@jidanni.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-29Merge branch 'lt/reset-merge'Libravatar Junio C Hamano2-9/+46
* lt/reset-merge: Document "git-reset --merge" Add 'merge' mode to 'git reset'
2008-12-29Merge branch 'np/auto-thread'Libravatar Junio C Hamano2-1/+9
* np/auto-thread: Force t5302 to use a single thread pack-objects: don't use too many threads with few objects autodetect number of CPUs by default when using threads
2008-12-29Merge branch 'maint'Libravatar Junio C Hamano3-16/+30
* maint: Prepare for v1.6.1.1 maintenance release Documentation/diff-options.txt: unify options gitweb: Fix export check in git_get_projects_list Conflicts: RelNotes
2008-12-29Prepare for v1.6.1.1 maintenance releaseLibravatar Junio C Hamano2-1/+24
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-29Documentation/diff-options.txt: unify optionsLibravatar jidanni@jidanni.org1-14/+4
Instead of listing short option (e.g. "-U<n>") as a shorthand for its longer counterpart (e.g. "--unified=<n>"), list the synonyms together. It saves one indirection to find what the reader wants. Signed-off-by: jidanni <jidanni@jidanni.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-29doc/git-send-email: mention sendemail.cc config variableLibravatar Markus Heidelberg1-0/+1
This variable was added in 5f8b9fc (git-send-email: add a new sendemail.cc configuration variable, 2008-04-27), but is not yet refered to by the documentation. Signed-off-by: Markus Heidelberg <markus.heidelberg@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-29diff: add option to show context between close hunksLibravatar René Scharfe7-1/+106
Merge two hunks if there is only the specified number of otherwise unshown context between them. For --inter-hunk-context=1, the resulting patch has the same number of lines but shows uninterrupted context instead of a context header line in between. Patches generated with this option are easier to read but are also more likely to conflict if the file to be patched contains other changes. This patch keeps the default for this option at 0. It is intended to just make the feature available in order to see its advantages and downsides. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-29Fix the building of gitman.info documentLibravatar Teemu Likonen2-3/+7
"makeinfo" failed to generate gitman.info from gitman.texi input file because the combined manual page file contains several nodes with the same name (DESCRIPTION, OPTIONS, SEE ALSO etc.). An Info document should contain unique node names. This patch creates a simple (read: ugly) work-around by suppressing the validation of the final Info file. Jumping to nodes in the Info document still works but they are not very useful. Common man-page headings like DESCRIPTION and OPTIONS appear in the Info node list and they point to the man page where they appear first (that is git-add currently). Also, this patch adds directory-entry information for Info document to make the document appear in the top-level Info directory. Signed-off-by: Teemu Likonen <tlikonen@iki.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-29Fix the building of user-manual.texi and gitman.texi documentsLibravatar Teemu Likonen1-3/+4
Previously "docbook2x-texi" failed to generate user-manual.texi and gitman.texi files from .xml input files because "iconv" stopped at "illegal input sequence" error. This was due to some UTF-8 octets in the input .xml files. This patch adds option --encoding=UTF-8 for "docbook2x-texi" to allow the building of .texi files complete. Signed-off-by: Teemu Likonen <tlikonen@iki.fi> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-12-27gitweb: Fix export check in git_get_projects_listLibravatar Devin Doucette1-2/+3
When $filter was empty, the path passed to check_export_ok would contain an extra '/', which some implementations of export_auth_hook are sensitive to. It makes more sense to fix this here than to handle the special case in each implementation of export_auth_hook. Signed-off-by: Devin Doucette <devin@doucette.cc> Acked-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>