summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Simplify parsing branch switching events in reflogJunio C Hamano2009-01-211-6/+2
| | | | | | | | | We only accept "checkout: moving from A to B" newer style reflog entries, in order to pick up A. There is no point computing where B begins at after running strstr to locate " to ", nor adding 4 and then subtracting 4 from the same pointer. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Introduce for_each_recent_reflog_ent().Junio C Hamano2009-01-193-2/+24
| | | | | | | | | This can be used to scan only the last few kilobytes of a reflog, as a cheap optimization when the data you are looking for is likely to be found near the end of it. The caller is expected to fall back to the full scan if that is not the case. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* interpret_nth_last_branch(): plug small memleakJunio C Hamano2009-01-191-3/+7
| | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Fix reflog parsing for a malformed branch switching entryJunio C Hamano2009-01-191-1/+1
| | | | | | target can be NULL when we failed to parse the message. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Fix parsing of @{-1}@{1}Johannes Schindelin2009-01-192-2/+25
| | | | | | | | | To do that, Git no longer looks forward for the '@{' corresponding to the closing '}' but backward, and dwim_ref() as well as dwim_log() learnt about the @{-<N>} notation. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* interpret_nth_last_branch(): avoid traversing the reflog twiceJunio C Hamano2009-01-192-24/+65
| | | | | | | | | | | | | | | You can have quite a many reflog entries, but you typically won't recall which branch you were on after switching branches for more than several times. Instead of reading the reflog twice, this reads the branch switching event and keeps as many entries as the user asked from the latest such entries, which is the minimum required to be able to switch back to the branch we were recently on. [jc: improvements from Dscho squashed in] Signed-off-by: Junio C Hamano <gitster@pobox.com>
* checkout: implement "-" abbreviation, add docs and testsThomas Rast2009-01-173-0/+57
| | | | | | | Have '-' mean the same as '@{-1}', i.e., the last branch we were on. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* sha1_name: support @{-N} syntax in get_sha1()Thomas Rast2009-01-173-3/+87
| | | | | | | | | | Let get_sha1() parse the @{-N} syntax, with docs and tests. Note that while @{-1}^2, @{-2}~5 and such are supported, @{-1}@{1} is currently not allowed. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* sha1_name: tweak @{-N} lookupThomas Rast2009-01-172-25/+32
| | | | | | | | | | | | | | Have the lookup only look at "interesting" checkouts, meaning those that tell you "Already on ..." don't count even though they also cause a reflog entry. Let interpret_nth_last_branch() return the number of characters parsed, so that git-checkout can verify that the branch spec was @{-N}, not @{-1}^2 or something like that. (The latter will be added later.) Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* checkout: implement "@{-N}" shortcut name for N-th last branchJunio C Hamano2009-01-173-2/+87
| | | | | | | | | Implement a shortcut @{-N} for the N-th last branch checked out, that works by parsing the reflog for the message added by previous git-checkout invocations. We expand the @{-N} to the branch name, so that you end up on an attached HEAD on that branch. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'maint'Junio C Hamano2009-01-152-0/+34
|\ | | | | | | | | | | | | * maint: t3404: Add test case for auto-amending only edited commits after "edit" t3404: Add test case for aborted --continue after "edit" t3501: check that commits are actually done
| * Merge branch 'maint-1.6.0' into maintJunio C Hamano2009-01-152-0/+34
| |\ | | | | | | | | | | | | | | | | | | * maint-1.6.0: t3404: Add test case for auto-amending only edited commits after "edit" t3404: Add test case for aborted --continue after "edit" t3501: check that commits are actually done
| | * t3404: Add test case for auto-amending only edited commits after "edit"Stephan Beyer2009-01-151-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | Add a test case for the bugfix introduced by commit c14c3c82d "git-rebase--interactive: auto amend only edited commit". Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | * t3404: Add test case for aborted --continue after "edit"Stephan Beyer2009-01-151-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | Add a test case for the bugfix introduced by commit 8beb1f33d "git-rebase-interactive: do not squash commits on abort". Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | * t3501: check that commits are actually doneStephan Beyer2009-01-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The basic idea of t3501 is to check whether revert and cherry-pick works on renamed files. But as there is no pure cherry-pick/revert test, it is good to also check if commits are actually done in that scenario. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | bash-completion: Add comments to remind about required argumentsTed Pavlic2009-01-151-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a few simple comments above commands that take arguments. These comments are meant to remind developers of potential problems that can occur when the script is sourced on systems with "set -u." Any function which requires arguments really ought to be called with explicit arguments given. Also adds a #!bash to the top of bash completions so that editing software can always identify that the file is of sh type. Signed-off-by: Ted Pavlic <ted@tedpavlic.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | bash-completion: Try bash completions before simple filetypeTed Pavlic2009-01-151-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a git completion is not found, a bash shell should try bash-type completions first before going to standard filetype completions. This patch adds "-o bashdefault" to the completion line. If that option is not available, it uses the old method. This behavior was inspired by Mercurial's bash completion script. Signed-off-by: Ted Pavlic <ted@tedpavlic.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | bash-completion: Support running when set -u is enabledTed Pavlic2009-01-151-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under "set -u" semantics, it is an error to access undefined variables. Some user environments may enable this setting in the interactive shell. In any context where the completion functions access an undefined variable, accessing a default empty string (aka "${1-}" instead of "$1") is a reasonable way to code the function, as it silences the undefined variable error while still supplying an empty string. In this patch, functions that should always take an argument still use $1. Functions that have optional arguments use ${1-}. Signed-off-by: Ted Pavlic <ted@tedpavlic.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'maint'Junio C Hamano2009-01-144-2/+49
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | * maint: Update draft release notes to 1.6.1.1 Make t3411 executable fix handling of multiple untracked files for git mv -k add test cases for "git mv -k"
| * | Update draft release notes to 1.6.1.1Junio C Hamano2009-01-141-2/+23
| | |
| * | Merge branch 'maint-1.6.0' into maintJunio C Hamano2009-01-142-0/+26
| |\ \ | | |/ | | | | | | | | | | | | * maint-1.6.0: fix handling of multiple untracked files for git mv -k add test cases for "git mv -k"
| | * fix handling of multiple untracked files for git mv -kMichael J Gruber2009-01-142-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "-k" option to "git mv" should allow specifying multiple untracked files. Currently, multiple untracked files raise an assertion if they appear consecutively as arguments. Fix this by decrementing the loop index after removing one entry from the array of arguments. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | * add test cases for "git mv -k"Michael J Gruber2009-01-141-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add test cases for ignoring nonexisting and untracked files using the -k option to "git mv". There is one known breakage related to multiple untracked files specfied as consecutive arguments. Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | Make t3411 executableMiklos Vajna2009-01-141-0/+0
| | | | | | | | | | | | | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Update 1.6.2 draft release notesJunio C Hamano2009-01-131-1/+38
| | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'maint'Junio C Hamano2009-01-132-5/+6
|\ \ \ | |/ / | | | | | | | | | | | | * maint: fast-import: Cleanup mode setting. Git.pm: call Error::Simple() properly
| * | Merge branch 'maint-1.6.0' into maintJunio C Hamano2009-01-132-5/+6
| |\ \ | | |/ | | | | | | | | | | | | * maint-1.6.0: fast-import: Cleanup mode setting. Git.pm: call Error::Simple() properly
| | * fast-import: Cleanup mode setting.Felipe Contreras2009-01-131-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "S_IFREG | mode" makes only sense for 0644 and 0755. Even though doing (S_IFREG | mode) may not hurt when mode is any other supported value, that is only true because S_IFREG mode bit happens to be already on for S_IFLNK or S_IFGITLINK. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Acked-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| | * Git.pm: call Error::Simple() properlyJay Soffian2009-01-131-2/+2
| | | | | | | | | | | | | | | | | | | | | The error message to Error::Simple() must be passed as a single argument. Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'nd/grep-assume-unchanged'Junio C Hamano2009-01-132-2/+20
|\ \ \ | | | | | | | | | | | | | | | | | | | | * nd/grep-assume-unchanged: grep: grep cache entries if they are "assume unchanged" grep: support --no-ext-grep to test builtin grep
| * | | grep: grep cache entries if they are "assume unchanged"Nguyễn Thái Ngọc Duy2008-12-272-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "Assume unchanged" bit means "please pretend that I have never touched this file", so if user removes the file, we should not care. This patch teaches "git grep" to use cache version in such situations. External grep case has not been fixed yet. But given that on the platform that CE_VALID bit may be used like Windows, external grep is not available anyway, I would wait for people to raise their hands before touching it. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | grep: support --no-ext-grep to test builtin grepNguyễn Thái Ngọc Duy2008-12-271-1/+7
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | Merge branch 'as/maint-shortlog-cleanup'Junio C Hamano2009-01-131-16/+3
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | * as/maint-shortlog-cleanup: builtin-shortlog.c: use string_list_append(), and don't strdup unnecessarily
| * | | | builtin-shortlog.c: use string_list_append(), and don't strdup unnecessarilyAdeodato Simó2009-01-011-16/+3
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make insert_one_record() use string_list_append(), instead of duplicating its code. Because of this, do not free the "util" member when clearing the "onelines" string lists: with the new code path it is not initialized to any value (was being initialized to NULL previously). Also, avoid unnecessary strdup() calls when inserting names in log->list. This list always has "strdup_strings" activated, hence strdup'ing namebuf is unnecessary. This change also removes a latent memory leak in the old code. NB: The duplicated code mentioned above predated the appearance of string_list_append(). Signed-off-by: Adeodato Simó <dato@net.com.org.es> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | Merge branch 'jc/maint-ls-tree'Junio C Hamano2009-01-132-2/+13
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | * jc/maint-ls-tree: Document git-ls-tree --full-tree ls-tree: add --full-tree option
| * | | | Document git-ls-tree --full-treeNanako Shiraishi2009-01-012-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | ls-tree: add --full-tree optionJunio C Hamano2008-12-261-0/+5
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The established behaviour of "git ls-tree $tree_ish" run from a subdirectory "sub/dir" in a work tree is to limit the output to the paths in the subdirectory, and strip off the leading "sub/dir" from the output, since 3c5e846 (ls-tree: major rewrite to do pathspec, 2005-11-26). This was a "usability" feature made back in the days when the line between Porcelain and plumbing was blurry, and in retrospect, it probably was misguided. The behaviour may be what the end user would expect when the command is run interactively from a subdirectory, but it also means that a scripted Porcelain that wants to use the command to list the full contents of a tree object has to do cd_to_toplevel (and save the output from "rev-parse --show-prefix" before doing so, so that it can be used as a pathspec if it wants to limit its operation to the original subdirectory in other commands). This new option makes the command operate on the full tree object, regardless of where in the work tree it is run from. It also implies the behaviour that is triggered by the existing --full-name option. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | Merge branch 'js/bundle-tags'Junio C Hamano2009-01-132-0/+65
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | * js/bundle-tags: bundle: allow rev-list options to exclude annotated tags
| * | | | bundle: allow rev-list options to exclude annotated tagsJohannes Schindelin2009-01-052-0/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With options such as "--all --since=2.weeks.ago", annotated tags used to be included, when they should have been excluded. The reason is that we heavily abuse the revision walker to determine what needs to be included or excluded. And the revision walker does not show tags at all (and therefore never marks tags as uninteresting). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'js/add-not-submodule'Junio C Hamano2009-01-132-0/+53
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * js/add-not-submodule: git add: do not add files from a submodule
| * | | | | git add: do not add files from a submoduleJohannes Schindelin2009-01-052-0/+53
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It comes quite as a surprise to an unsuspecting Git user that calling "git add submodule/file" (which is a mistake, alright) _removes_ the submodule in the index, and adds the file. Instead, complain loudly. While at it, be nice when the user said "git add submodule/" which is most likely the consequence of tab-completion, and stage the submodule, instead of trying to add the contents of that directory. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'pb/maint-git-pm-false-dir'Junio C Hamano2009-01-131-3/+4
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * pb/maint-git-pm-false-dir: Git.pm: correctly handle directory name that evaluates to "false"
| * | | | | Git.pm: correctly handle directory name that evaluates to "false"Philippe Bruhat (BooK)2009-01-011-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The repository constructor mistakenly rewrote a Directory parameter that Perl happens to evaluate to false (e.g. "0") to ".". Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'pj/maint-ldflags'Junio C Hamano2009-01-131-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * pj/maint-ldflags: configure clobbers LDFLAGS
| * | | | | | configure clobbers LDFLAGSPaul Jarc2009-01-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In a couple of tests, configure clobbers the LDFLAGS value set by the caller. This patch fixes it. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | Merge branch 'fe/cvsserver'Junio C Hamano2009-01-132-4/+20
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fe/cvsserver: cvsserver: change generation of CVS author names cvsserver: add option to configure commit message
| * | | | | | | cvsserver: change generation of CVS author namesFabian Emmes2009-01-051-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CVS username is generated from local part email address. We take the whole local part but restrict the character set to the Portable Filename Character Set, which is used for Unix login names according to Single Unix Specification v3. This will obviously report different usernames from existing repositories for commits with the local part of the author e-mail address that contains characters outside the PFCS. Hopefully this won't break an old CVS checkout from an earlier version of git-cvsserver, because the names are always shown afresh to the CVS clients and not kept on the client side. Signed-off-by: Fabian Emmes <fabian.emmes@rwth-aachen.de> Signed-off-by: Lars Noschinski <lars@public.noschinski.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | cvsserver: add option to configure commit messageFabian Emmes2009-01-032-1/+11
| | |_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cvsserver annotates each commit message by "via git-CVS emulator". This is made configurable via gitcvs.commitmsgannotation. Signed-off-by: Fabian Emmes <fabian.emmes@rwth-aachen.de> Signed-off-by: Lars Noschinski <lars@public.noschinski.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | Merge branch 'js/maint-bisect-gitk'Junio C Hamano2009-01-131-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * js/maint-bisect-gitk: bisect view: call gitk if Cygwin's SESSIONNAME variable is set
| * | | | | | | bisect view: call gitk if Cygwin's SESSIONNAME variable is setJohannes Schindelin2009-01-031-1/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It seems that Cygwin sets the variable SESSIONNAME when an interactive desktop session is running, and does not set it when you log in via ssh. So we can use this variable to determine whether to run gitk or git log in git bisect view. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>