summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2009-01-18lstat_cache(): introduce invalidate_lstat_cache() functionLibravatar Kjetil Barvik2-8/+37
In some cases it could maybe be necessary to say to the cache that "Hey, I deleted/changed the type of this pathname and if you currently have it inside your cache, you should deleted it". This patch introduce a function which support this. Signed-off-by: Kjetil Barvik <barvik@broadpark.no> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-18lstat_cache(): introduce has_dirs_only_path() functionLibravatar Kjetil Barvik3-39/+60
The create_directories() function in entry.c currently calls stat() or lstat() for each path component of the pathname 'path' each and every time. For the 'git checkout' command, this function is called on each file for which we must do an update (ce->ce_flags & CE_UPDATE), so we get lots and lots of calls. To fix this, we make a new wrapper to the lstat_cache() function, and call the wrapper function instead of the calls to the stat() or the lstat() functions. Since the paths given to the create_directories() function, is sorted alphabetically, the new wrapper would be very cache effective in this situation. To support it we must update the lstat_cache() function to be able to say that "please test the complete length of 'name'", and also to give it the length of a prefix, where the cache should use the stat() function instead of the lstat() function to test each path component. Thanks to Junio C Hamano, Linus Torvalds and Rene Scharfe for valuable comments to this patch! Signed-off-by: Kjetil Barvik <barvik@broadpark.no> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-18lstat_cache(): introduce has_symlink_or_noent_leading_path() functionLibravatar Kjetil Barvik3-36/+63
In some cases, especially inside the unpack-trees.c file, and inside the verify_absent() function, we can avoid some unnecessary calls to lstat(), if the lstat_cache() function can also be told to keep track of non-existing directories. So we update the lstat_cache() function to handle this new fact, introduce a new wrapper function, and the result is that we save lots of lstat() calls for a removed directory which previously contained lots of files, when we call this new wrapper of lstat_cache() instead of the old one. We do similar changes inside the unlink_entry() function, since if we can already say that the leading directory component of a pathname does not exist, it is not necessary to try to remove a pathname below it! Thanks to Junio C Hamano, Linus Torvalds and Rene Scharfe for valuable comments to this patch! Signed-off-by: Kjetil Barvik <barvik@broadpark.no> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-01-18lstat_cache(): more cache effective symlink/directory detectionLibravatar Kjetil Barvik1-40/+125
Make the cache functionality more effective. Previously when A/B/C/D was in the cache and A/B/C/E/file.c was called for, there was no match at all from the cache. Now we use the fact that the paths "A", "A/B" and "A/B/C" are already tested, and we only need to do an lstat() call on "A/B/C/E". We only cache/store the last path regardless of its type. Since the cache functionality is always used with alphabetically sorted names (at least it seems so for me), there is no need to store both the last symlink-leading path and the last real-directory path. Note that if the cache is not called with (mostly) alphabetically sorted names, neither the old, nor this new one, would be very effective. Previously, when symlink A/B/C/S was cached/stored in the symlink- leading path, and A/B/C/file.c was called for, it was not easy to use the fact that we already knew that the paths "A", "A/B" and "A/B/C" are real directories. Avoid copying the first path components of the name 2 zillion times when we test new path components. Since we always cache/store the last path, we can copy each component as we test those directly into the cache. Previously we ended up doing a memcpy() for the full path/name right before each lstat() call, and when updating the cache for each time we have tested a new path component. We also use less memory, that is, PATH_MAX bytes less memory on the stack and PATH_MAX bytes less memory on the heap. Thanks to Junio C Hamano, Linus Torvalds and Rene Scharfe for valuable comments to this patch! Signed-off-by: Kjetil Barvik <barvik@broadpark.no> 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>
2008-12-27Merge branch 'maint'Libravatar Junio C Hamano7-97/+145
* maint: git-send-email.txt: move --format-patch paragraph to a proper location git-shortlog.txt: improve documentation about .mailmap files pretty: support multiline subjects with format: pretty: factor out format_subject() pretty: factor out skip_empty_lines() merge-file: handle freopen() failure daemon: cleanup: factor out xstrdup_tolower() daemon: cleanup: replace loop with if daemon: handle freopen() failure describe: Avoid unnecessary warning when using --all
2008-12-27Start 1.6.2 cycleLibravatar Junio C Hamano2-1/+29
Signed-off-by: Junio C Hamano <gitster@pobox.com>