- 31 5月, 2012 1 次提交
-
-
由 Erik Faye-Lund 提交于
In 9765b6ab (rebase: align variable content, 2011-02-06), the code to error out was moved up one level. Unfortunately, one reference to a function parameter wasn't rewritten as it should, leading to the wrong parameter being errored on. This error was propagated by 71786f54 (rebase: factor out reference parsing, 2011-02-06) and merged in 78c6e0f3 (Merge branch 'mz/rebase', 2011-04-28). Correct this by reporting $onto_name istead. Reported-By: NManuela Hutter <manuelah@opera.com> Signed-off-by: NErik Faye-Lund <kusmabite@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 05 3月, 2012 1 次提交
-
-
由 Carlos Martín Nieto 提交于
The current message is too long and at too low a level for anybody to understand it if they don't know about the configuration format already. The text about setting up a remote is superfluous and doesn't help understand or recover from the error that has happened. Show the usage more prominently and explain how to set up the tracking information. If there is only one remote, that name is used instead of the generic <remote>. Also simplify the message we print on detached HEAD to remove unnecessary information which is better left for the documentation. Signed-off-by: NCarlos Martín Nieto <cmn@elego.de> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 14 10月, 2011 1 次提交
-
-
由 Jeff King 提交于
You can't currently run git-pull or git-rebase from outside of the work tree, even with GIT_WORK_TREE set, due to an overeager require_work_tree function. Commit e2eb5273 documents this problem and provides the infrastructure for a fix, but left it to later commits to audit and update individual scripts. Changing these scripts to use require_work_tree_exists is easy to verify. We immediately call cd_to_toplevel, anyway. Therefore no matter which function we use, the state afterwards is one of: 1. We have a work tree, and we are at the top level. 2. We don't have a work tree, and we have died. The only catch is that we must also make sure no code that ran before the cd_to_toplevel assumed that we were already in the working tree. In this case, we will only have included shell libraries and called set_reflog_action, neither of which care about the current working directory at all. Signed-off-by: NJeff King <peff@peff.net> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 06 8月, 2011 1 次提交
-
-
由 Jon Seymour 提交于
I found that the patched 4 files were different when this filter is applied. expand -i | unexpand --first-only This patch contains the corrected files. Signed-off-by: NJon Seymour <jon.seymour@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 14 7月, 2011 1 次提交
-
-
由 Martin von Zweigbergk 提交于
The description for 'git rebase --abort' currently says: Restore the original branch and abort the rebase operation. The "restore" can be misinterpreted to imply that the original branch was somehow in a broken state during the rebase operation. It is also not completely clear what "the original branch" is --- is it the branch that was checked out before the rebase operation was called or is the the branch that is being rebased (it is the latter)? Although both issues are made clear in the DESCRIPTION section, let us also make the entry in the OPTIONS secion more clear. Also remove the term "rebasing process" from the usage text, since the user already knows that the text is about "git rebase". Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 30 6月, 2011 1 次提交
-
-
由 Johannes Sixt 提交于
When a non-existent branch was specified to be rebased, the complete usage information is printed after the error message that carries the relevant piece of information: $ git rebase master topci fatal: no such branch: topci usage: git rebase [-i] [options] [--onto <newbase>] [<upstream>] [<branch>] or: git rebase [-i] [options] --onto <newbase> --root [<branch>] or: git-rebase [-i] --continue | --abort | --skip Available options are [30 lines of usage stripped] The error message was introduced recently by 4ac5356c (rebase: give a better error message for bogus branch, 2011-01-27), and the result was acceptable because the usage text was just two lines. But 45e2acf3 (rebase: define options in OPTIONS_SPEC, 2011-02-28) made things worse because the usage text is now 35 lines. Just drop the usage information because it does not add value to the error message. Signed-off-by: NJohannes Sixt <j6t@kdbg.org> Acked-by: NJeff King <peff@peff.net> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 28 5月, 2011 2 次提交
-
-
由 Jeff King 提交于
When we finish a rebase, our detached HEAD is at the final result. We update the original branch ref with this result, and then point the HEAD symbolic ref at the updated branch. We write a reflog for the branch update, but not for the update of HEAD. Because we're already at the final result on the detached HEAD, moving to the branch actually doesn't change our commit sha1 at all. So in that sense, a reflog entry would be pointless. However, humans do read reflogs, and an entry saying "rebase finished: returning to refs/heads/master" can be helpful in understanding what is going on. Signed-off-by: NJeff King <peff@peff.net> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Csaba Henk 提交于
When we abort a rebase, we return to the original value of HEAD. Failing to write a reflog entry means we create a gap in the reflog (which can cause "git show HEAD@{5.minutes.ago}" to issue a warning). Plus having the extra entry makes the reflog easier to follow for a human. Signed-off-by: NJeff King <peff@peff.net> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 05 3月, 2011 1 次提交
-
-
由 Martin von Zweigbergk 提交于
Interactive rebase used to have its own command line processing. Since it used the 'git rev-parse --parseopt' functionality exposed through git-sh-setup, it had some flexibility, like matching prefixes of long options, that non-interactive rebase didn't. When interactive rebase's command line processing was factored out into git-rebase.sh in cf432ca0 (rebase: factor out command line option processing, 2011-02-06), this flexibility was lost. Give back that flexibility to interactive and non-interactive by defining its options in OPTIONS_SPEC. Also improve the usage message to contain the --continue, --skip and --abort sub commands. Reported-by: NJohannes Sixt <j6t@kdbg.org> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 11 2月, 2011 25 次提交
-
-
由 Martin von Zweigbergk 提交于
'git rebase' without arguments is currently not supported. Make it default to 'git rebase @{upstream}'. That is also what 'git pull [--rebase]' defaults to, so it only makes sense that 'git rebase' defaults to the same thing. Defaulting to @{upstream} will make it possible to run e.g. 'git rebase -i' without arguments, which is probably a quite common use case. It also improves the scenario where you have multiple branches that rebase against a remote-tracking branch, where you currently have to choose between the extra network delay of 'git pull' or the slightly awkward keys to enter 'git rebase @{u}'. The error reporting when no upstream is configured for the current branch or when no branch is checked out is reused from git-pull.sh. A function is extracted into git-parse-remote.sh for this purpose. Helped-by: NYann Dirson <ydirson@altern.org> Helped-by: NJonathan Nieder <jrnieder@gmail.com> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
If '--[no-]allow_rerere_autoupdate' is passed when 'git rebase -m' is called and a merge conflict occurs, the flag will be forgotten for the rest of the rebase process. Make rebase remember it by saving the value. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
When a rebase is resumed, interactive rebase remembers any merge strategy passed when the rebase was initated. Make non-interactive rebase remember any merge strategy as well. Also make non-interactive rebase remember any merge strategy options. To be able to resume a rebase that was initiated with an older version of git (older than this commit), make sure not to expect the saved option files to exist. Test case idea taken from Junio's 71fc224f (t3402: test "rebase -s<strategy> -X<opt>", 2010-11-11). Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Currently, only interactive rebase remembers the value of the '-v' flag from the initial invocation. Make non-interactive rebase also remember it. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Extract the code for writing the state to rebase-apply/ or rebase-merge/ when a rebase is initiated. This will make it easier to later make both interactive and non-interactive rebase remember the options used. Note that non-interactive rebase stores the sha1 of the original head in a file called orig-head, while interactive rebase stores it in a file called head. Change this by writing to orig-head in both cases. When reading, try to read from orig-head. If that fails, read from head instead. This protects users who upgraded git while they had an ongoing interactive rebase, while still making it possible to remove the code that reads from head at some point in the future. Helped-by: NThomas Rast <trast@student.ethz.ch> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Factor out the common parts of the handling of the sub commands '--continue', '--skip' and '--abort'. The '--abort' handling can handled completely in git-rebase.sh. After this refactoring, the calls to git-rebase--am.sh, git-rebase--merge.sh and git-rebase--interactive.sh will be better aligned. There will only be one call to interactive rebase that will shortcut the very last part of git-rebase.sh. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
To make it possible to later remove the handling of --abort from git-rebase--interactive.sh, align the implementation in git-rebase.sh with the former by making it a bit more verbose. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Extract the code for am-based rebase to git-rebase--am.sh. Suggested-by: NJohannes Sixt <j6t@kdbg.org> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Extract the code for merge-based rebase to git-rebase--merge.sh. Suggested-by: NJohannes Sixt <j6t@kdbg.org> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
The variables $branch and $orig_head were used as synonyms. To avoid confusion, remove $branch. The name 'orig_head' seems more suitable, since that is the name used when the variable is persisted. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Remove the parsing and validation of references (onto, upstream, branch) from git-rebase--interactive.sh and rely on the information exported from git-rebase.sh. By using the parsing of the --onto parameter in git-rebase.sh, this improves the error message when the parameter is invalid. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Move up the code that displays the diffstat if '--stat' is passed, so that it will be executed before calling git-rebase--interactive.sh. A side effect is that the diffstat is now displayed before "First, rewinding head to replay your work on top of it...". Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Reorder validation steps in preparation for the validation to be factored out from git-rebase--interactive.sh into git-rebase.sh. The main functional difference is that the pre-rebase hook will no longer be run if the work tree is dirty. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Remove the call to the pre-rebase hook from git-rebase--interactive.sh and rely on the call in git-rebase.sh. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Remove the check for clean work tree from git-rebase--interactive.sh and rely on the check in git-rebase.sh. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Factor out the command line processing in git-rebase--interactive.sh to git-rebase.sh. Store the options in variables in git-rebase.sh and then source git-rebase--interactive.sh. Suggested-by: NJohannes Sixt <j6t@kdbg.org> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Make sure to interpret variables with the same name in the same way in git-rebase.sh and git-rebase--interactive.sh. This will make it easier to factor out code from git-rebase.sh to git-rebase--interactive and export the variables. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
git-rebase--interactive.sh will soon be sourced from git-rebase.sh. Align the names of variables used in these scripts to prepare for that. Some names in git-rebase--interactive.sh, such as "author_script" and "amend", are currently used in their upper case form to refer to a file and in their lower case form to refer to something else. In these cases, change the name of the existing lower case variable and downcase the name of the variable that refers to the file. Currently, git-rebase.sh uses mostly lower case variable names, while git-rebase--interactive.sh uses mostly upper case variable names. For consistency, downcase all variables, not just the ones that will be shared between the two script files. Helped-by: NThomas Rast <trast@student.ethz.ch> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
The sub commands '--continue', '--skip' or '--abort' may only be used standalone according to the documentation. Other options following the sub command are currently not accepted, but options preceeding them are. For example, 'git rebase --continue -v' is not accepted, while 'git rebase -v --continue' is. Tighten up the check and allow no other options when one of these sub commands are used. Only check that it is standalone for non-interactive rebase for now. Once the command line processing for interactive rebase has been replaced by the command line processing in git-rebase.sh, this check will also apply to interactive rebase. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
To later be able to use the command line processing in git-rebase.sh for both interactive and non-interactive rebases, move anything that is specific to non-interactive rebase outside of the parsing loop. Keep only parsing and validation of command line options in the loop. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Detect early on if a rebase is in progress and what type of rebase it is (interactive, merge-based or am-based). This prepares for further refactoring where am-based rebase will be dispatched to git-rebase--am.sh and merge-based rebase will be dispatched to git-rebase--merge.sh. The idea is to use the same variables whether the type of rebase was detected from rebase-apply/ or rebase-merge/ directories or from the command line options. This will make the code more readable and will later also make it easier to dispatch to the type-specific scripts. Also show a consistent error message independent of the type of rebase that was in progress and remove the obsolete wording about being in the middle of a 'patch application', since that (an existing "$GIT_DIR"/rebase-apply/applying) aborts 'git rebase' at an earlier stage. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
The state stored in $GIT_DIR/rebase-merge/prev_head was introduced in 58634dbf (rebase: Allow merge strategies to be used when rebasing, 2006-06-21), but it was never used and should therefore be removed. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
The 'onto_name' state used in 'git rebase --merge' is currently read once for each commit that need to be applied. It doesn't change between each iteration, however, so it should be moved out of the loop. This also makes the code more readable. Also remove the unused variable 'end'. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
The code reading the state saved in $merge_dir or $rebase_dir is currently spread out in many places, making it harder to read and to introduce additional state. Extract this code into one method that reads the state. Only extract the code associated with the state that is written when the rebase is initiated. Leave the state that changes for each commmit, at least for now. Currently, when resuming a merge-based rebase using --continue or --skip, move_to_original_branch (via finish_rb_merge) will be called without head_name and orig_head set. These variables are then lazily read in move_to_original_branch if head_name is not set (together with onto, which is unnecessarily read again). Change this by always eagerly reading the state, for both am-based and merge-based rebase, in the --continue and --skip cases. Note that this does not change the behavior for am-based rebase, which read the state eagerly even before this commit. Reading the state eagerly means that part of the state will sometimes be read unnecessarily. One example is when the rebase is continued, but stops again at another merge conflict. Another example is when the rebase is aborted. However, since both of these cases involve user interaction, the delay is hopefully not noticeable. The call_merge/continue_merge loop is not affected. Helped-by: NJunio C Hamano <gitster@pobox.com> Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Instead of using the old variable name 'dotest' for "$GIT_DIR"/rebase-merge and no variable for "$GIT_DIR"/rebase-apply, introduce two variables 'merge_dir' and 'apply_dir' for these paths. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 27 1月, 2011 2 次提交
-
-
由 Jeff King 提交于
When you give a non-existent branch to git-rebase, it spits out the usage. This can be confusing, since you may understand the usage just fine, but simply have made a mistake in the branch name. Before: $ git rebase origin bogus Usage: git rebase ... After: $ git rebase origin bogus fatal: no such branch: bogus Usage: git rebase ... Signed-off-by: NJeff King <peff@peff.net> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Jeff King 提交于
In the case of a ref/pathname conflict, checkout will already do the right thing and checkout the ref. However, for a non-existant ref, this has two advantages: 1. If a file with that pathname exists, rebase will refresh the file from the index and then rebase the current branch instead of producing an error. 2. If no such file exists, the error message using an explicit "--" is better: # before $ git rebase -i origin bogus error: pathspec 'bogus' did not match any file(s) known to git. Could not checkout bogus # after $ git rebase -i origin bogus fatal: invalid reference: bogus Could not checkout bogus The problems seem to be trigger-able only through "git rebase -i", as regular git-rebase checks the validity of the branch parameter as a ref very early on. However, it doesn't hurt to be defensive. Signed-off-by: NJeff King <peff@peff.net> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 30 11月, 2010 1 次提交
-
-
由 Martin von Zweigbergk 提交于
If rebase.stat is set to true, a diffstat should be displayed. If it is not set, it should default to false. However, if it is explicitly set to false (or other value), a diffstat is still displayed, which is probably not what most users would expect. Show diffstat only if it is set to true. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 24 11月, 2010 2 次提交
-
-
由 Martin von Zweigbergk 提交于
If a non-interactive rebase of a ref fails at commit X and is aborted by the user, the ref will be updated twice. First to point at X (with the reflog message "rebase finished: $head_name onto $onto"), and then back to $orig_head. It should not be updated at all. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
由 Martin von Zweigbergk 提交于
Interactive rebase allows the '--verify' option to be passed, but it will be ignored. Implement proper support for the option for both interactive and non-interactive rebase by making it override any previous '--no-verify'. Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-
- 11 11月, 2010 1 次提交
-
-
由 Martin von Zweigbergk 提交于
If any strategy options are passed to -X, the strategy will always be set to 'recursive'. According to the documentation, it should default to 'recursive' if it is not set, but it should be possible to set it to other values. This fixes a regression introduced in v1.7.3-rc0~67^2 (2010-07-29). Signed-off-by: NMartin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: NJunio C Hamano <gitster@pobox.com>
-