summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/commands/git.go23
1 files changed, 14 insertions, 9 deletions
diff --git a/pkg/commands/git.go b/pkg/commands/git.go
index ecfd86eb2..33ef6d5ba 100644
--- a/pkg/commands/git.go
+++ b/pkg/commands/git.go
@@ -715,14 +715,7 @@ func (c *GitCommand) EditRebaseTodo(index int, action string) error {
}
content := strings.Split(string(bytes), "\n")
-
- // count lines that are not blank and are not comments
- commitCount := 0
- for _, line := range content {
- if line != "" && !strings.HasPrefix(line, "#") {
- commitCount++
- }
- }
+ commitCount := c.getTodoCommitCount(content)
// we have the most recent commit at the bottom whereas the todo file has
// it at the bottom, so we need to subtract our index from the commit count
@@ -734,6 +727,17 @@ func (c *GitCommand) EditRebaseTodo(index int, action string) error {
return ioutil.WriteFile(fileName, []byte(result), 0644)
}
+func (c *GitCommand) getTodoCommitCount(content []string) int {
+ // count lines that are not blank and are not comments
+ commitCount := 0
+ for _, line := range content {
+ if line != "" && !strings.HasPrefix(line, "#") {
+ commitCount++
+ }
+ }
+ return commitCount
+}
+
// MoveTodoDown moves a rebase todo item down by one position
func (c *GitCommand) MoveTodoDown(index int) error {
fileName := ".git/rebase-merge/git-rebase-todo"
@@ -743,7 +747,8 @@ func (c *GitCommand) MoveTodoDown(index int) error {
}
content := strings.Split(string(bytes), "\n")
- contentIndex := len(content) - 2 - index
+ commitCount := c.getTodoCommitCount(content)
+ contentIndex := commitCount - 1 - index
rearrangedContent := append(content[0:contentIndex-1], content[contentIndex], content[contentIndex-1])
rearrangedContent = append(rearrangedContent, content[contentIndex+1:]...)