summaryrefslogtreecommitdiff
path: root/git-rebase--interactive.sh
Commit message (Collapse)AuthorAgeFilesLines
* Avoid one-or-more (\+) non BRE in sed scripts.Junio C Hamano2007-09-011-1/+1
| | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: fix squashing corner caseJohannes Schindelin2007-08-231-2/+3
| | | | | | | | | | | | When squashing, rebase -i did not prevent fast forwards. This could happen when picking some other commit than the first one, and then squashing the first commit. So do not allow fast forwards when squashing. Noticed by Johannes Sixt. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: fix for optional [branch] parameterJohannes Schindelin2007-08-011-1/+1
| | | | | | | | | | | | When calling "git rebase -i <upstream> <branch>", git should switch to <branch> first. This worked before, but I broke it by my "Shut git rebase -i up" patch. Fix that, and add a test to make sure that it does not break again. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Acked-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: ignore patches that are already in the upstreamJohannes Schindelin2007-08-011-2/+3
| | | | | | | | Non-interactive rebase had this from the beginning -- match it by using --cherry-pick option to rev-list. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Rename git-rebase interactive buffer: todo => git-rebase-todoSeth Falcon2007-07-281-1/+1
| | | | | | | | | When using emacsclient or similar, a temporary buffer (file) named 'todo' could cause confusion with a pre-existing buffer of the same name. Signed-off-by: Seth Falcon <sethfalcon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: fix interrupted squashingJohannes Schindelin2007-07-271-1/+1
| | | | | | | | | | When a squashing merge failed, the first commit would not be replaced, due to "git reset --soft" being called with an unmerged index. Noticed by Uwe Kleine-König. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: fix overzealous output redirectionJohannes Schindelin2007-07-251-1/+3
| | | | | | | | | When squashing, you no longer saw what the editor had to say to you after commit 'Shut "git rebase -i" up when no --verbose was given' (if you used a console based editor, at least). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: exchange all "if [ .. ]" by "if test .."Johannes Schindelin2007-07-231-7/+7
| | | | | | | | | | | | This patch is literally :%s/if \[ *\(.*[^ ]\) *\]/if test \1/ in vi, after making sure that the other instances of "[..]" are not actually invocations of "test". Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Shut "git rebase -i" up when no --verbose was givenJohannes Schindelin2007-07-231-16/+34
| | | | | | | | | | Up to now, git rebase -i was quite chatty, showing through all the nice core programs it called. Now it only shows a progress meter by default. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: call editor just once for a multi-squashJohannes Schindelin2007-07-211-10/+46
| | | | | | | | | Sometimes you want to squash more than two commits. Before this patch, the editor was fired up for each squash command. Now the editor is started only with the last squash command. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Add GIT_EDITOR environment and core.editor configuration variablesAdam Roben2007-07-201-1/+1
| | | | | | | | | | | These variables let you specify an editor that will be launched in preference to the EDITOR and VISUAL environment variables. The order of preference is GIT_EDITOR, core.editor, EDITOR, VISUAL. [jc: added a test and config variable documentation] Signed-off-by: Adam Roben <aroben@apple.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Fix git-rebase -i to allow squashing of fast-forwardable commitsAlex Riesen2007-07-131-2/+3
| | | | | | | | Without this change the commits will be left standalone, with duplicated commit message. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: put a nice warning into the todo listJohannes Schindelin2007-07-081-0/+3
| | | | | | | | | | | It seems that not everybody expects a difference between keeping a "pick" line, and deleting it. So be a bit more explicit about that, with all capitals to get the attention. Noticed by vmiklos on IRC. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: remember the settings of -v, -s and -p when interruptedJohannes Schindelin2007-07-081-0/+4
| | | | | | | | | After interruption, be that an edit, or a conflicting commit, reset the variables VERBOSE, STRATEGY and PRESERVE_MERGES, so that the user does not have to respecify them with "rebase --continue". Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: actually show the diffstat when being verboseJohannes Schindelin2007-07-081-4/+4
| | | | | | | | | | The "while" loop in the function do_rest is not supposed to ever be exited. Instead, the function do_one checks if there is nothing left, and cleans up and exits if that is the case. So the diffstat code belongs there. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: handle --continue more like non-interactive rebaseJohannes Schindelin2007-07-081-9/+17
| | | | | | | | | | | | | | | Non-interactive rebase requires the working tree to be clean, but applies what is in the index without requiring the user to do it herself. Imitate that, but (since we are interactive, after all) fire up an editor with the commit message. It also fixes a subtle bug: a forgotten "continue" was removed, which led to an infinite loop when continuing without remaining patches. Both issues noticed by Frank Lichtenheld. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Teach rebase -i about --preserve-mergesJohannes Schindelin2007-06-261-3/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The option "-p" (or long "--preserve-merges") makes it possible to rebase side branches including merges, without straightening the history. Example: X \ A---M---B / ---o---O---P---Q When the current HEAD is "B", "git rebase -i -p --onto Q O" will yield X \ ---o---O---P---Q---A'---M'---B' Note that this will - _not_ touch X [*1*], it does - _not_ work without the --interactive flag [*2*], it does - _not_ guess the type of the merge, but blindly uses recursive or whatever strategy you provided with "-s <strategy>" for all merges it has to redo, and it does - _not_ make use of the original merge commit via git-rerere. *1*: only commits which reach a merge base between <upstream> and HEAD are reapplied. The others are kept as-are. *2*: git-rebase without --interactive is inherently patch based (at least at the moment), and therefore merges cannot be preserved. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: provide reasonable reflog for the rebased branchJohannes Schindelin2007-06-261-2/+8
| | | | | | | | | | If your rebase succeeded, the HEAD's reflog will still show the whole mess, but "<branchname>@{1}" now shows the state _before_ the rebase, so that you can reset (or compare) the original and the rebased revisions more easily. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* rebase -i: several cleanupsJohannes Schindelin2007-06-261-4/+15
| | | | | | | | | Support "--verbose" in addition to "-v", show short names in the list comment, clean up if there is nothing to do, and add several "test_ticks" in the test script. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* Teach rebase an interactive modeJohannes Schindelin2007-06-241-0/+289
Don't you just hate the fact sometimes, that git-rebase just applies the patches, without any possibility to edit them, or rearrange them? With "--interactive", git-rebase now lets you edit the list of patches, so that you can reorder, edit and delete patches. Such a list will typically look like this: pick deadbee The oneline of this commit pick fa1afe1 The oneline of the next commit ... By replacing the command "pick" with the command "edit", you can amend that patch and/or its commit message, and by replacing it with "squash" you can tell rebase to fold that patch into the patch before that. It is derived from the script sent to the list in <Pine.LNX.4.63.0702252156190.22628@wbgn013.biozentrum.uni-wuerzburg.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>