summaryrefslogtreecommitdiff
path: root/git-rebase.sh
Commit message (Collapse)AuthorAgeFilesLines
* rebase: add options passed to git-amMichele Ballabio2009-03-181-0/+4
| | | | | | | | | Add the options --committer-date-is-author-date and --ignore-date to git-rebase. They were introduced in commit a79ec62d0 for git-am. These options imply --force-rebase. Signed-off-by: Michele Ballabio <barra_cuda@katamail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'tv/rebase-stat'Junio C Hamano2009-03-111-7/+18
|\ | | | | | | | | | | * tv/rebase-stat: git-pull: Allow --stat and --no-stat to be used with --rebase git-rebase: Add --stat and --no-stat for producing diffstat on rebase
| * git-rebase: Add --stat and --no-stat for producing diffstat on rebaseTor Arne Vestbø2009-03-021-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | The behavior of --verbose is unchanged, but uses a different state variable internally, so that the meaning of verbose output may be expanded without affecting the diffstat. This is also reflected in the documentation. The configuration option rebase.stat works the same was as merg.stat, but the default is currently false. Signed-off-by: Tor Arne Vestbø <torarnv@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Merge branch 'sr/force-rebase'Junio C Hamano2009-03-051-5/+19
|\ \ | |/ |/| | | | | * sr/force-rebase: Teach rebase to rebase even if upstream is up to date
| * Teach rebase to rebase even if upstream is up to dateSverre Rabbelier2009-02-131-5/+19
| | | | | | | | | | | | | | | | | | | | Normally, if the current branch is up to date, the rebase is aborted. However, it may be desirable to allow rebasing even if the current branch is up to date. When using the '--whitespace=fix' option -f is implied. Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | disallow providing multiple upstream branches to rebase, pull --rebaseJay Soffian2009-02-181-0/+1
|/ | | | | | | | It does not make sense to provide multiple upstream branches to either git pull --rebase, or to git rebase, so disallow both. Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase: learn to rebase root commitThomas Rast2009-01-111-16/+40
| | | | | | | | | | | | | | | | | | Teach git-rebase a new option --root, which instructs it to rebase the entire history leading up to <branch>. This option must be used with --onto <newbase>, and causes commits that already exist in <newbase> to be skipped. (Normal operation skips commits that already exist in <upstream> instead.) One possible use-case is with git-svn: suppose you start hacking (perhaps offline) on a new project, but later notice you want to commit this work to SVN. You will have to rebase the entire history, including the root commit, on a (possibly empty) commit coming from git-svn, to establish a history connection. This previously had to be done by cherry-picking the root commit manually. Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase: improve error messages about dirty stateJeff King2008-12-101-3/+6
| | | | | | | | | | | | | | | | | | | | If you have unstaged changes in your working tree and try to rebase, you will get the cryptic "foo: needs update" message, but nothing else. If you have staged changes, you get "your index is not up-to-date". Let's improve this situation in two ways: - for unstaged changes, let's also tell them we are canceling the rebase, and why (in addition to the "needs update" lines) - for the staged changes case, let's use language that is a little more clear to the user: their index contains uncommitted changes Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase: use git rev-parse -qMiklos Vajna2008-12-031-2/+2
| | | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'ae/preservemerge'Junio C Hamano2008-10-191-3/+19
|\ | | | | | | | | * ae/preservemerge: rebase: Support preserving merges in non-interactive mode
| * rebase: Support preserving merges in non-interactive modeAndreas Ericsson2008-09-301-3/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As a result of implementation details, 'git rebase' could previously only preserve merges in interactive mode. That limitation was hard for users to understand and awkward to explain. This patch works around it by running the interactive rebase helper git-rebase--interactive with GIT_EDITOR set to ':' when the user passes "-p" but not "-i" to the rebase command. The effect is that the interactive rebase helper is used but the user never sees an editor. The test-case included in this patch was originally written by Stephen Habermann <stephen@exigencecorp.com>, but has been extensively modified since its creation. Signed-off-by: Andreas Ericsson <ae@op5.se> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | rebase --no-verifyNanako Shiraishi2008-10-061-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | It is sometimes desirable to disable the safety net of pre-rebase hook when the user knows what he is doing (for example, when the original changes on the branch have not been shown to the public yet). This teaches --no-verify option to git-rebase, which is similar to the way pre-commit hook is bypassed by git-commit. Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Teach rebase -i to honor pre-rebase hookNanako Shiraishi2008-10-061-7/+11
|/ | | | | | | | | The original git-rebase honored pre-rebase hook so that public branches can be protected from getting rebased, but rebase --interactive ignored the hook entirely. This fixes it. Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Improve error output of git-rebaseStephan Beyer2008-08-161-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | "git rebase" without arguments on initial startup showed: fatal: Needed a single revision invalid upstream This patch makes it show the ordinary usage string. If .git/rebase-merge or .git/rebase-apply/rebasing exists, git-rebase will die with a message saying that a rebase is in progress and the user should try --skip/--abort/--continue. If .git/rebase-apply/applying exists, git-rebase will die with a message saying that git-am is in progress, regardless how many arguments are given. If no arguments are given and .git/rebase-apply/ exists, but neither a rebasing nor applying file is in that directory, git-rebase dies with a message saying that rebase-apply exists and no arguments were given. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Rename .git/rebase to .git/rebase-applyJohannes Schindelin2008-07-211-23/+25
| | | | | | | | | | With git-am, it sounds awkward to have the patches in ".git/rebase/", but for technical reasons, we have to keep the same directory name for git-am and git-rebase. ".git/rebase-apply" seems to be a good compromise. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'rs/rebase-checkout-not-so-quiet'Junio C Hamano2008-07-161-2/+1
|\ | | | | | | | | | | | | | | * rs/rebase-checkout-not-so-quiet: git-rebase: report checkout failure Conflicts: git-rebase.sh
| * git-rebase: report checkout failureJunio C Hamano2008-07-141-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | When detaching the HEAD to the base commit, the "git checkout" command could fail if, for example, upstream contains a file that would overrwrite a local, untracked file. Unconditionally discarding the standard error stream was done to squelch the progress and notices back when checkout did not have -q option, but there is no reason to keep doing it anymore. Noticed by Robert Shearman. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"Johannes Schindelin2008-07-151-22/+22
| | | | | | | | | | | | | | | | | | | | | | Since the files generated and used during a rebase are never to be tracked, they should live in $GIT_DIR. While at it, avoid the rather meaningless term "dotest" to "rebase", and unhide ".dotest-merge". This was wished for on the mailing list, but so far unimplemented. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Teach "am" and "rebase" to mark the original position with ORIG_HEADJunio C Hamano2008-07-071-1/+1
|/ | | | | | | | | | | | | | | | | "merge" and "reset" leave the original point in history in ORIG_HEAD, which makes it easy to go back to where you were before you inflict a major damage to your history and realize that you do not like the result at all. These days with reflog, we technically do not need to use ORIG_HEAD, but it is a handy way nevertheless. This teaches "am" and "rebase" (all forms --- the vanilla one that uses "am" as its backend, "-m" variant that cherry-picks, and "--interactive") to do the same. The original idea and a partial implementation to do this only for "rebase -m" was by Brian Gernhardt; this extends on his idea. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* git-rebase.sh: Add check if rebase is in progressStephan Beyer2008-06-221-4/+10
| | | | | | | | "git rebase --continue" and friends gave nonsense errors when there is no rebase in progress. Signed-off-by: Stephan Beyer <s-beyer@gmx.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Ignore dirty submodule states during rebase and stashJohannes Schindelin2008-05-151-4/+4
| | | | | | | | | | | | | When rebasing or stashing, chances are that you do not care about dirty submodules, since they are not updated by those actions anyway. So ignore the submodules' states. Note: the submodule states -- as committed in the superproject -- will still be stashed and rebased, it is _just_ the state of the submodule in the working tree which is ignored. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'bd/tests'Junio C Hamano2008-05-141-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bd/tests: Rename the test trash directory to contain spaces. Fix tests breaking when checkout path contains shell metacharacters Don't use the 'export NAME=value' in the test scripts. lib-git-svn.sh: Fix quoting issues with paths containing shell metacharacters test-lib.sh: Fix some missing path quoting Use test_set_editor in t9001-send-email.sh test-lib.sh: Add a test_set_editor function to safely set $VISUAL git-send-email.perl: Handle shell metacharacters in $EDITOR properly config.c: Escape backslashes in section names properly git-rebase.sh: Fix --merge --abort failures when path contains whitespace Conflicts: t/t9115-git-svn-dcommit-funky-renames.sh
| * git-rebase.sh: Fix --merge --abort failures when path contains whitespaceBryan Donlan2008-05-051-1/+1
| | | | | | | | | | | | | | Also update t/t3407-rebase-abort.sh to expose the bug. Signed-off-by: Bryan Donlan <bdonlan@fushizen.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | fix bsd shell negationJeff King2008-05-131-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | On some shells (notably /bin/sh on FreeBSD 6.1), the construct foo && ! bar | baz is true if foo && baz whereas for most other shells (such as bash) is true if foo && ! baz We can work around this by specifying foo && ! (bar | baz) which works everywhere. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase [--onto O] A B: omit needless checkoutJunio C Hamano2008-03-161-20/+32
| | | | | | | | | | | | | | | | | | This teaches "git rebase [--onto O] A B" to omit an unnecessary checkout of branch B before it goes on. "git-rebase" originally was about rebasing the current branch to somewhere else, and when the extra parameter to name which branch to rebase was added, it defined the semantics to the safest but stupid "first switch to the named branch and then operate exactly the same way as if we were already on that branch". But the first thing the real part of "rebase" does is to reset the work tree and the index to the "onto" commit. Which means the "rebase that branch" form switched the work tree to the tip of the branch only to immediately switch again to another commit. This was wasteful. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'maint'Junio C Hamano2008-03-161-1/+1
|\ | | | | | | | | | | | | | | | | | | * maint: Start draft ReleaseNotes for 1.5.4.5 rebase -m: do not trigger pre-commit verification Conflicts: RelNotes
| * rebase -m: do not trigger pre-commit verificationJunio C Hamano2008-03-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | When rebasing changes that contain issues that the pre-commit hook flags as problematic, the rebase cannot be continued. However, rebase is about transplanting commits that are already made with as little distortion as possible, and pre-commit check should not interfere. Earlier, c5b09fe (Avoid update hook during git-rebase --interactive, 2007-12-19) fixed "rebase -i", but "rebase -m" shared the same issue. Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * git rebase --abort: always restore the right commitMike Hommey2008-03-111-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | update 'git rebase' documentationSZEDER Gábor2008-03-101-2/+1
| | | | | | | | | | | | | | | | | | 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>
* | am: --rebasingJunio C Hamano2008-03-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The new option --rebasing is used internally for rebase to tell am that it is being used for its purpose. This would leave .dotest/rebasing to help "completion" scripts tell if the ongoing operation is am or rebase. Also the option at the same time stands for --binary, -3 and -k which are always given when rebase drives am as its backend. Using the information "am" leaves, git-completion.bash tells ongoing rebase and am apart. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | git rebase --abort: always restore the right commitMike Hommey2008-03-011-3/+2
|/ | | | | | | | | | | | 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. Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Merge branch 'maint'Junio C Hamano2007-11-281-2/+2
|\ | | | | | | | | | | * maint: scripts: do not get confused with HEAD in work tree Improve description of git-branch -d and -D in man page.
| * scripts: do not get confused with HEAD in work treeJunio C Hamano2007-11-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | When you have a file called HEAD in your work tree, many commands that our scripts feed "HEAD" to would complain about the rev vs path ambiguity. A solution is to form command line more carefully by appending -- to them, which makes it clear that we mean HEAD rev not HEAD file. This patch would apply to maint. Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * Fixing path quoting in git-rebaseJonathan del Strother2007-11-021-13/+13
| | | | | | | | | | | | | | git-rebase used to fail when run from a path containing a space. Signed-off-by: Jonathan del Strother <jon.delStrother@bestbefore.tv> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Merge branch 'mh/rebase-skip-hard'Junio C Hamano2007-11-241-0/+1
|\ \ | | | | | | | | | | | | * mh/rebase-skip-hard: Do git reset --hard HEAD when using git rebase --skip
| * | Do git reset --hard HEAD when using git rebase --skipMike Hommey2007-11-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When you have a merge conflict and want to bypass the commit causing it, you don't want to care about the dirty state of the working tree. Also, don't git reset --hard HEAD in the rebase-skip test, so that the lack of support for this is detected. Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'ph/parseopt-sh'Junio C Hamano2007-11-171-0/+1
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ph/parseopt-sh: git-quiltimport.sh fix --patches handling git-am: -i does not take a string parameter. sh-setup: don't let eval output to be shell-expanded. git-sh-setup: fix parseopt `eval` string underquoting Give git-am back the ability to add Signed-off-by lines. git-rev-parse --parseopt scripts: Add placeholders for OPTIONS_SPEC Migrate git-repack.sh to use git-rev-parse --parseopt Migrate git-quiltimport.sh to use git-rev-parse --parseopt Migrate git-checkout.sh to use git-rev-parse --parseopt --keep-dashdash Migrate git-instaweb.sh to use git-rev-parse --parseopt Migrate git-merge.sh to use git-rev-parse --parseopt Migrate git-am.sh to use git-rev-parse --parseopt Migrate git-clone to use git-rev-parse --parseopt Migrate git-clean.sh to use git-rev-parse --parseopt. Update git-sh-setup(1) to allow transparent use of git-rev-parse --parseopt Add a parseopt mode to git-rev-parse to bring parse-options to shell scripts.
| * | | scripts: Add placeholders for OPTIONS_SPECJunio C Hamano2007-11-061-0/+1
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | --text follows this line-- These commands currently lack OPTIONS_SPEC; allow people to easily list with "git grep 'OPTIONS_SPEC=$'" what they can help improving. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | rebase: fix "rebase --continue" breakageJohannes Schindelin2007-11-121-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | The --skip case was handled properly when rebasing without --merge, but the --continue case was not. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | rebase: operate on a detached HEADJohannes Schindelin2007-11-091-5/+51
|/ / | | | | | | | | | | | | | | | | | | | | The interactive version of rebase does all the operations on a detached HEAD, so that after a successful rebase, <branch>@{1} is the pre-rebase state. The reflogs of "HEAD" still show all the actions in detail. This teaches the non-interactive version to do the same. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Fixing path quoting in git-rebaseJonathan del Strother2007-10-181-13/+13
| | | | | | | | | | | | | | git-rebase used to fail when run from a path containing a space. Signed-off-by: Jonathan del Strother <jon.delStrother@bestbefore.tv> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Merge branch 'maint'Junio C Hamano2007-09-231-3/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | * maint: git-svn: don't attempt to spawn pager if we don't want one Supplant the "while case ... break ;; esac" idiom User Manual: add a chapter for submodules user-manual: don't assume refs are stored under .git/refs Detect exec bit in more cases. Conjugate "search" correctly in the git-prune-packed man page. Move the paragraph specifying where the .idx and .pack files should be Documentation/git-lost-found.txt: drop unnecessarily duplicated name.
| * Supplant the "while case ... break ;; esac" idiomDavid Kastrup2007-09-231-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A lot of shell scripts contained stuff starting with while case "$#" in 0) break ;; esac and similar. I consider breaking out of the condition instead of the body od the loop ugly, and the implied "true" value of the non-matching case is not really obvious to humans at first glance. It happens not to be obvious to some BSD shells, either, but that's because they are not POSIX-compliant. In most cases, this has been replaced by a straight condition using "test". "case" has the advantage of being faster than "test" on vintage shells where "test" is not a builtin. Since none of them is likely to run the git scripts, anyway, the added readability should be worth the change. A few loops have had their termination condition expressed differently. Signed-off-by: David Kastrup <dak@gnu.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | git-rebase: fix -C optionJ. Bruce Fields2007-09-071-1/+0
| | | | | | | | | | | | | | | | The extra shift here causes failure to parse any commandline including the -C option. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | git-rebase: support --whitespace=<option>J. Bruce Fields2007-09-071-1/+4
|/ | | | | | | | | Pass --whitespace=<option> to git-apply. Since git-apply and git-am expect this, I'm always surprised when I try to give it to git-rebase and it doesn't work. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Avoid one-or-more (\+) non BRE in sed scripts.Junio C Hamano2007-09-011-4/+1
| | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -m: Fix incorrect short-logs of already applied commits.Johannes Sixt2007-09-011-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | When a topic branch is rebased, some of whose commits are already cherry-picked upstream: o--X--A--B--Y <- master \ A--B--Z <- topic then 'git rebase -m master' would report: Already applied: 0001 Y Already applied: 0002 Y With this fix it reports the expected: Already applied: 0001 A Already applied: 0002 B As an added bonus, this change also avoids 'echo' of a commit message, which might contain escapements. Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Enable "git rerere" by the config variable rerere.enabledJohannes Schindelin2007-07-061-9/+3
| | | | | | | | | | | | | | | | | | | Earlier, "git rerere" was enabled by creating the directory .git/rr-cache. That is definitely not in line with most other features, which are enabled by a config variable. So, check the config variable "rerere.enabled". If it is set to "false" explicitely, do not activate rerere, even if .git/rr-cache exists. This should help when you want to disable rerere temporarily. If "rerere.enabled" is not set at all, fall back to detection of the directory .git/rr-cache. [jc: with minimum tweaks] Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Allow rebase to run if upstream is completely mergedJohannes Sixt2007-07-041-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Consider this history: o--o-...-B <- origin \ \ x--x--M--x--x <- master In this situation, rebase considers master fully up-to-date and would not do anything. However, if there were additional commits on origin, the rebase would run and move the commits x on top of origin. Here we change rebase to short-circuit out only if the history since origin is strictly linear. Consequently, the above as well as a history like this would be linearized: o--o <- origin \ x--x \ \ x--M--x--x <- master Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Rewrite "git-frotz" to "git frotz"Junio C Hamano2007-07-021-19/+19
| | | | | | This uses the remove-dashes target to replace "git-frotz" to "git frotz". Signed-off-by: Junio C Hamano <gitster@pobox.com>