summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2008-03-14web--browse: use custom commands defined at config timeLibravatar Christian Couder1-2/+13
Currently "git web--browse" is restricted to a set of commands defined in the script. You can subvert the "browser.<tool>.path" to force "git web--browse" to use a different command, but if you have a command whose invocation syntax does not match one of the current tools then you would have to write a wrapper script for it. This patch adds a git config variable "browser.<tool>.cmd" which allows a more flexible browser choice. If you run "git web--browse" with -t/--tool, -b/--browser or the "web.browser" config variable set to an unrecognized tool then "git web--browse" will query the "browser.<tool>.cmd" config variable. If this variable exists, then "git web--browse" will treat the specified tool as a custom command and will use a shell eval to run the command with the URLs added as extra parameters. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-14Merge branch 'mr/autoconf-fread'Libravatar Junio C Hamano2-0/+21
* mr/autoconf-fread: autoconf: Test FREAD_READS_DIRECTORIES
2008-03-14Merge branch 'maint'Libravatar Junio C Hamano7-18/+95
* maint: merge-file: handle empty files gracefully merge-recursive: handle file mode changes Minor wording changes in the keyboard descriptions in git-add --interactive. git fetch: Take '-n' to mean '--no-tags' quiltimport: fix misquoting of parsed -p<num> parameter git-quiltimport: better parser to grok "enhanced" series files.
2008-03-14Merge branch 'ph/maint-quiltimport' into maintLibravatar Junio C Hamano1-3/+19
* ph/maint-quiltimport: quiltimport: fix misquoting of parsed -p<num> parameter git-quiltimport: better parser to grok "enhanced" series files.
2008-03-13read-tree() and unpack_trees(): use consistent limitLibravatar Junio C Hamano3-8/+9
read-tree -m can read up to MAX_TREES, which was arbitrarily set to 8 since August 2007 (4 is needed to deal with 2 merge-base case). However, the updated unpack_trees() code had an advertised limit of 4 (which it enforced). In reality the code was prepared to take only 3 trees and giving 4 caused it to stomp on its stack. Rename the MAX_TREES constant to MAX_UNPACK_TREES, move it to the unpack-trees.h common header file, and use it from both places to avoid future confusion. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-13merge-file: handle empty files gracefullyLibravatar Johannes Schindelin2-3/+4
Earlier, it would error out while trying to read and/or writing them. Now, calling merge-file with empty files is neither interesting nor useful, but it is a bug that needed fixing. Noticed by Clemens Buchacher. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2008-03-13merge-recursive: handle file mode changesLibravatar Clemens Buchacher2-2/+62
File mode changes should be handled similarly to changes of content. That is, if the file mode changed in only one branch, keep the changed version, and if both branch changed to different mode, mark it as a conflict. Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-13pack-objects: proper pack time stamping with --max-pack-sizeLibravatar Nicolas Pitre2-0/+27
Runtime pack access is done in the pack file mtime order since recent packs are more likely to contain frequently used objects than old packs. However the --max-pack-size option can produce multiple packs with mtime in the reversed order as newer objects are always written first. Let's modify mtime of later pack files (when any) so they appear older than preceding ones when a repack creates multiple packs. Signed-off-by: Nicolas Pitre <nico@cam.org>
2008-03-13Minor wording changes in the keyboard descriptions in git-add --interactive.Libravatar Vineet Kumar1-10/+8
The wording of the interactive help text from git-add--interactive.perl is clearer. Just duplicate that text here. Signed-off-by: Vineet Kumar <vineet@doorstop.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-13git fetch: Take '-n' to mean '--no-tags'Libravatar Johannes Schindelin1-0/+2
Prior to commit 8320199 (Rewrite builtin-fetch option parsing to use parse_options().), we understood '-n' as a short option to mean "don't fetch tags from the remote". This patch reinstates behaviour similar, but not identical to the pre commit 8320199 times. Back then, -n always overrode --tags, so if both --tags and -n was given on command-line, no tags were fetched regardless of argument ordering. Now we use a "last entry wins" strategy, so '-n --tags' means "fetch tags". Since it's patently absurd to say both --tags and --no-tags, this shouldn't matter in practice. Spotted-by: Artem Zolochevskiy <azol@altlinux.org> Reported-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Tested-by: Andreas Ericsson <ae@op5.se> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-12Merge branch 'maint'Libravatar Junio C Hamano1-1/+1
* maint: git-cvsimport: fix merging with remote parent branch gitweb: Fix bug in href(..., -replay=>1) when using 'pathinfo' form
2008-03-12gc: call "prune --expire 2.weeks.ago" by defaultLibravatar Johannes Schindelin5-32/+73
The only reason we did not call "prune" in git-gc was that it is an inherently dangerous operation: if there is a commit going on, you will prune loose objects that were just created, and are, in fact, needed by the commit object just about to be created. Since it is dangerous, we told users so. That led to many users not even daring to run it when it was actually safe. Besides, they are users, and should not have to remember such details as when to call git-gc with --prune, or to call git-prune directly. Of course, the consequence was that "git gc --auto" gets triggered much more often than we would like, since unreferenced loose objects (such as left-overs from a rebase or a reset --hard) were never pruned. Alas, git-prune recently learnt the option --expire <minimum-age>, which makes it a much safer operation. This allows us to call prune from git-gc, with a grace period of 2 weeks for the unreferenced loose objects (this value was determined in a discussion on the git list as a safe one). If you want to override this grace period, just set the config variable gc.pruneExpire to a different value; an example would be [gc] pruneExpire = 6.months.ago or even "never", if you feel really paranoid. Note that this new behaviour makes "--prune" be a no-op. While adding a test to t5304-prune.sh (since it really tests the implicit call to "prune"), also the original test for "prune --expire" was moved there from t1410-reflog.sh, where it did not belong. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2008-03-12Documentation/config: typofixLibravatar Junio C Hamano1-1/+1
Each heading of enumerated list should end with double-colon, not single. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-12quiltimport: fix misquoting of parsed -p<num> parameterLibravatar Junio C Hamano1-2/+2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-12git-cvsimport: fix merging with remote parent branchLibravatar Marc-Andre Lureau1-1/+1
commit-tree fails when specifying a remote name (via -r option) and one of the parent branch has a name. Prefixing with "$remote/" fix it. Signed-off-by: Marc-Andre Lureau <marcandre.lureau@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-12gitweb: Fix bug in href(..., -replay=>1) when using 'pathinfo' formLibravatar Jakub Narebski1-2/+2
URLs generated by href(..., -replay=>1) (which includes 'next page' links and alternate view links) didn't set project info correctly when current page URL is in pathinfo form. This resulted in broken links such like: http://www.example.com/w/ARRAY(0x85a5318)?a=shortlog;pg=1 if the 'pathinfo' feature was used, or http://www.example.com/w/?a=shortlog;pg=1 if it wasn't, instead of correct: http://www.example.com/w/project.git?a=shortlog;pg=1 This was caused by the fact that href() always replays params in the arrayref form, were they multivalued or singlevalued, and the code dealing with 'pathinfo' feature couldn't deal with $params{'project'} being arrayref. Setting $params{'project'} is moved before replaying params; this ensures that 'project' parameter is processed correctly. Noticed-by: Peter Oberndorfer <kumbayo84@arcor.de> Noticed-by: Wincent Colaiuta <win@wincent.com> Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11Merge git://repo.or.cz/git-guiLibravatar Junio C Hamano9-573/+724
* git://repo.or.cz/git-gui: git-gui: Simplify MSGFMT setting in Makefile git-gui: Add option for changing the width of the commit message text box git-gui: if a background colour is set, set foreground colour as well git-gui: translate the remaining messages in zh_cn.po to chinese
2008-03-12git-gui: Simplify MSGFMT setting in MakefileLibravatar Junio C Hamano1-6/+1
To prepare msg files for Tcl scripts, the command that is set to MSGFMT make variable needs to be able to grok "--tcl -l <lang> -d <here>" options correctly. This patch simplifies the tests done in git-gui's Makefile to directly test this condition. If the test run does not exit properly with zero status (either because you do not have "msgfmt" itself, or your "msgfmt" is too old to grok --tcl option --- the reason does not matter), have it fall back to po/po2msg.sh Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-11Merge branch 'js/remote'Libravatar Junio C Hamano12-3/+795
* js/remote: "remote update": print remote name being fetched from builtin remote rm: remove symbolic refs, too remote: fix "update [group...]" remote show: Clean up connection correctly if object fetch wasn't done builtin-remote: prune remotes correctly that were added with --mirror Make git-remote a builtin Test "git remote show" and "git remote prune" parseopt: add flag to stop on first non option path-list: add functions to work with unsorted lists Conflicts: parse-options.c
2008-03-11Merge branch 'lt/unpack-trees'Libravatar Junio C Hamano15-452/+503
* lt/unpack-trees: unpack_trees(): fix diff-index regression. traverse_trees_recursive(): propagate merge errors up unpack_trees(): minor memory leak fix in unused destination index Make 'unpack_trees()' have a separate source and destination index Make 'unpack_trees()' take the index to work on as an argument Add 'const' where appropriate to index handling functions Fix tree-walking compare_entry() in the presense of --prefix Move 'unpack_trees()' over to 'traverse_trees()' interface Make 'traverse_trees()' traverse conflicting DF entries in parallel Add return value to 'traverse_tree()' callback Make 'traverse_tree()' use linked structure rather than 'const char *base' Add 'df_name_compare()' helper function
2008-03-11"remote update": print remote name being fetched fromLibravatar Samuel Tardieu1-0/+1
When the other end has dangling symref, "git fetch" issues an error message but that is not grave enough to cause the fetch process to fail. As the result, the user will see something like this: $ git remote update error: refs/heads/2.0-uobjects points nowhere! "remote update" used to report which remote it is fetching from, like this: $ git remote update Updating core Updating matthieu error: refs/heads/2.0-uobjects points nowhere! Updating origin This reinstates the message "Updating <name>" in "git remote update". Signed-off-by: Samuel Tardieu <sam@rfc1149.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11Merge branch 'maint'Libravatar Junio C Hamano4-3/+37
* maint: git-svn: fix find-rev error message when missing arg t0021: tr portability fix for Solaris launch_editor(): allow spaces in the filename git rebase --abort: always restore the right commit
2008-03-11git-svn: fix find-rev error message when missing argLibravatar Marc-Andre Lureau1-1/+2
Just let the user know that a revision argument is missing instead of a perl error. This error message mimic the "init" error message, but could be improved. Signed-off-by: Marc-Andre Lureau <marcandre.lureau@gmail.com> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11t0021: tr portability fix for SolarisLibravatar Jeff King1-1/+3
Solaris' /usr/bin/tr doesn't seem to like multiple character ranges in brackets (it simply prints "Bad string"). Instead, let's just enumerate the transformation we want. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11launch_editor(): allow spaces in the filenameLibravatar Johannes Schindelin2-1/+32
The construct sh -c "$0 \"$@\"" <editor> <file> does not pick up quotes in <editor>, so you cannot give path to the editor that has a shell IFS whitespace in it, and also give it initial set of parameters and flags. Replace $0 with <editor> to fix this issue. This fixes git config core.editor '"c:/Program Files/What/Ever.exe"' In other words, you can specify an editor with spaces in its path using a config containing something like this: [core] editor = \"c:/Program Files/Darn/Spaces.exe\" NOTE: we cannot just replace the $0 with \"$0\", because we still want this to work: [core] editor = emacs -nw Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11git rebase --abort: always restore the right commitLibravatar Mike Hommey2-3/+73
Previously, --abort would end by git resetting to ORIG_HEAD, but some commands, such as git reset --hard (which happened in git rebase --skip, but could just as well be typed by the user), would have already modified ORIG_HEAD. Just use the orig-head we store in $dotest instead. [jc: cherry-picked from 48411d and 4947cf9 on 'master'] Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11autoconf: Test FREAD_READS_DIRECTORIESLibravatar Michal Rokos2-0/+21
Add test for FREAD_READS_DIRECTORIES to detect when fread() reads fopen'ed directory. Tested on these platforms: AIX 5.3 - FREAD_READS_DIRECTORIES=UnfortunatelyYes HP-UX B.11.11 - FREAD_READS_DIRECTORIES=UnfortunatelyYes HP-UX B.11.23 - FREAD_READS_DIRECTORIES=UnfortunatelyYes Linux 2.6.25-rc4 - FREAD_READS_DIRECTORIES= Tru64 V5.1 - FREAD_READS_DIRECTORIES=UnfortunatelyYes Windows - FREAD_READS_DIRECTORIES= Signed-off-by: Michal Rokos <michal.rokos@nextsoft.cz> Tested-by: Mike Ralphson <mike@abacus.co.uk> Tested-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-11Merge branch 'jc/cherry-pick' (early part)Libravatar Junio C Hamano6-389/+449
* 'jc/cherry-pick' (early part): expose a helper function peel_to_type(). merge-recursive: split low-level merge functions out. Conflicts: Makefile builtin-merge-recursive.c sha1_name.c
2008-03-11Merge branch 'maint'Libravatar Junio C Hamano1-0/+2
* maint: git-pull documentation: warn about the option order
2008-03-11Merge branch 'kb/maint-filter-branch-disappear' into maintLibravatar Junio C Hamano2-1/+34
* kb/maint-filter-branch-disappear: filter-branch: handle "disappearing tree" case correctly in subdir filter
2008-03-11Merge branch 'aw/maint-shortlog-blank-lines' into maintLibravatar Junio C Hamano1-2/+3
* aw/maint-shortlog-blank-lines: shortlog: take the first populated line of the description
2008-03-10unpack_trees(): fix diff-index regression.Libravatar Linus Torvalds2-2/+18
When skip_unmerged option is not given, unpack_trees() should not just skip unmerged cache entries but keep them in the result for the caller to sort them out. For callers other than diff-index, the incoming index should never be unmerged, but diff-index is a special case caller. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-10update 'git rebase' documentationLibravatar SZEDER Gábor2-4/+2
Being in the project's top directory when starting or continuing a rebase is not necessary since 533b703 (Allow whole-tree operations to be started from a subdirectory, 2007-01-12). Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-10bash: fix long option with argument double completionLibravatar SZEDER Gábor1-7/+15
Pressing TAB right after 'git command --long-option=' results in 'git command --long-option=--long-option=' when the long option requires an argument, but we don't provide completion for its arguments (e.g. commit --author=, apply --exclude=). This patch detects these long options and provides empty completion array for them. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: Add more long options to be completed with "git --<TAB>"Libravatar Teemu Likonen1-0/+3
Add the following long options to be completed with command "git": --paginate --work-tree= --help Signed-off-by: Teemu Likonen <tlikonen@iki.fi> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: use __gitdir when completing 'git rebase' optionsLibravatar SZEDER Gábor1-2/+2
When doing completion of rebase options in a subdirectory of the work tree during an ongoing rebase, wrong options were offered because of the hardcoded .git/.dotest-merge path. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: Remove completion of core.legacyheaders optionLibravatar Shawn O. Pearce1-1/+0
This option is no longer recognized by git. Completing it is not worthwhile. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: add 'git svn' subcommands and optionsLibravatar SZEDER Gábor1-1/+80
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: add new 'git stash' subcommandsLibravatar SZEDER Gábor1-1/+1
Namely 'save', 'drop', 'pop' and 'create' Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: refactor searching for subcommands on the command lineLibravatar SZEDER Gábor1-39/+32
This patch adds the __git_find_subcommand function, which takes one argument: a string containing all subcommands separated by spaces. The function searches through the command line whether a subcommand is already present. The first found subcommand will be printed to standard output. This enables us to remove code duplications from completion functions for commands having subcommands. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: remove unnecessary conditions when checking for subcommandsLibravatar SZEDER Gábor1-4/+4
Checking emptyness of $command is sufficient. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10bash: Properly quote the GIT_DIR at all times to fix subdirectory paths with ↵Libravatar Kevin Ballard1-4/+4
spaces Signed-off-by: Kevin Ballard <kevin@sb.org> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-03-10traverse_trees_recursive(): propagate merge errors upLibravatar Junio C Hamano1-3/+4
There were few places where merge errors detected deeper in the call chain were ignored and not propagated up the callchain to the caller. Most notably, this caused switching branches with "git checkout" to ignore a path modified in a work tree are different between the HEAD version and the commit being switched to, which it internally notices but ignores it, resulting in an incorrect two-way merge and loss of the change in the work tree. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-10git-pull documentation: warn about the option orderLibravatar Junio C Hamano1-0/+2
We might eventually be loosening this rule, but there is a longstanding restriction that the users currently need to be aware of. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-09git-quiltimport: better parser to grok "enhanced" series files.Libravatar Pierre Habouzit1-3/+19
The previous parser wasn't able to grok: * empty lines; * annotated patch levels (trailing -pNNN annotations); * trailing comments. Now it understands them and uses the patch level hints as a git apply argument. Signed-off-by: Pierre Habouzit <madcoder@debian.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-09unpack_trees(): minor memory leak fix in unused destination indexLibravatar Linus Torvalds1-0/+1
This adds a "discard_index(&o->result)" to the failure path, to reclaim memory from an in-core index we built but ended up not using. The *big* memory leak comes from the fact that we leak the cache_entry things left and right. That's a very traditional and deliberate leak: because we used to build up the cache entries by just mapping them directly in from the index file (and we emulate that in modern times by allocating them from one big array), we can't actually free them one-by-one. So doing the "discard_index()" will free the hash tables etc, which is good, and it will free the "istate->alloc" but that is never set on the result because we don't get the result from the index read. So we don't actually free the individual cache entries themselves that got created from the trees. That's not something new, btw. We never did. But some day we should just add a flag to the cache_entry() that it's a "free one by one" kind, and then we could/should do it. In the meantime, this one-liner will fix *some* of the memory leaks, but not that old traditional one. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-09Make 'unpack_trees()' have a separate source and destination indexLibravatar Linus Torvalds8-153/+102
We will always unpack into our own internal index, but we will take the source from wherever specified, and we will optionally write the result to a specified index (optionally, because not everybody even _wants_ any result: the index diffing really wants to just walk the tree and index in parallel). This ends up removing a fair number more lines than it adds, for the simple reason that we can now skip all the crud that tried to be oh-so-careful about maintaining our position in the index as we were traversing and modifying it. Since we don't actually modify the source index any more, we can just update the 'o->pos' pointer without worrying about whether an index entry got removed or replaced or added to. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-09Make 'unpack_trees()' take the index to work on as an argumentLibravatar Linus Torvalds7-39/+52
This is just a very mechanical conversion, and makes everybody set it to '&the_index' before calling, but at least it makes it more explicit where we work with the index. The next stage would be to split that index usage up into a 'source' and a 'destination' index, so that we can unpack into a different index than we started out from. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-09Add 'const' where appropriate to index handling functionsLibravatar Linus Torvalds4-16/+16
This is in an effort to make the source index of 'unpack_trees()' as being const, and thus making the compiler help us verify that we only access it for reading. The constification also extended to some of the hashing helpers that get called indirectly. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-09Fix tree-walking compare_entry() in the presense of --prefixLibravatar Linus Torvalds1-0/+3
When we make the "root" tree-walk info entry have a pathname in it, we need to have a ->prev pointer so that compare_entry will actually notice and traverse into the root. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>