1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-15 00:15:32 +02:00

Merge pull request #1869 from mark2185/feature/unset-upstream

This commit is contained in:
Jesse Duffield
2022-05-06 20:14:13 +10:00
committed by GitHub
134 changed files with 401 additions and 91 deletions

View File

@ -59,6 +59,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>f</kbd>: fast-forward this branch from its upstream <kbd>f</kbd>: fast-forward this branch from its upstream
<kbd>g</kbd>: view reset options <kbd>g</kbd>: view reset options
<kbd>R</kbd>: rename branch <kbd>R</kbd>: rename branch
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: view commits <kbd>enter</kbd>: view commits
</pre> </pre>

View File

@ -86,6 +86,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>f</kbd>: fast-forward deze branch vanaf zijn upstream <kbd>f</kbd>: fast-forward deze branch vanaf zijn upstream
<kbd>g</kbd>: bekijk reset opties <kbd>g</kbd>: bekijk reset opties
<kbd>R</kbd>: hernoem branch <kbd>R</kbd>: hernoem branch
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: bekijk commits <kbd>enter</kbd>: bekijk commits
</pre> </pre>

View File

@ -59,6 +59,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>f</kbd>: fast-forward this branch from its upstream <kbd>f</kbd>: fast-forward this branch from its upstream
<kbd>g</kbd>: wyświetl opcje resetu <kbd>g</kbd>: wyświetl opcje resetu
<kbd>R</kbd>: rename branch <kbd>R</kbd>: rename branch
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: view commits <kbd>enter</kbd>: view commits
</pre> </pre>

View File

@ -74,6 +74,7 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
<kbd>f</kbd>: 从上游快进此分支 <kbd>f</kbd>: 从上游快进此分支
<kbd>g</kbd>: 查看重置选项 <kbd>g</kbd>: 查看重置选项
<kbd>R</kbd>: 重命名分支 <kbd>R</kbd>: 重命名分支
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: 查看提交 <kbd>enter</kbd>: 查看提交
</pre> </pre>

View File

@ -109,6 +109,10 @@ func (self *BranchCommands) SetUpstream(remoteName string, remoteBranchName stri
return self.cmd.New(fmt.Sprintf("git branch --set-upstream-to=%s/%s %s", self.cmd.Quote(remoteName), self.cmd.Quote(remoteBranchName), self.cmd.Quote(branchName))).Run() return self.cmd.New(fmt.Sprintf("git branch --set-upstream-to=%s/%s %s", self.cmd.Quote(remoteName), self.cmd.Quote(remoteBranchName), self.cmd.Quote(branchName))).Run()
} }
func (self *BranchCommands) UnsetUpstream(branchName string) error {
return self.cmd.New(fmt.Sprintf("git branch --unset-upstream %s", self.cmd.Quote(branchName))).Run()
}
func (self *BranchCommands) GetCurrentBranchUpstreamDifferenceCount() (string, string) { func (self *BranchCommands) GetCurrentBranchUpstreamDifferenceCount() (string, string) {
return self.GetCommitDifferences("HEAD", "HEAD@{u}") return self.GetCommitDifferences("HEAD", "HEAD@{u}")
} }

View File

@ -23,12 +23,13 @@ func (gui *Gui) resetControllers() {
) )
rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon, gui.State.Contexts, gui.git, gui.takeOverMergeConflictScrolling, refsHelper) rebaseHelper := helpers.NewMergeAndRebaseHelper(helperCommon, gui.State.Contexts, gui.git, gui.takeOverMergeConflictScrolling, refsHelper)
suggestionsHelper := helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions)
gui.helpers = &helpers.Helpers{ gui.helpers = &helpers.Helpers{
Refs: refsHelper, Refs: refsHelper,
Host: helpers.NewHostHelper(helperCommon, gui.git), Host: helpers.NewHostHelper(helperCommon, gui.git),
PatchBuilding: helpers.NewPatchBuildingHelper(helperCommon, gui.git), PatchBuilding: helpers.NewPatchBuildingHelper(helperCommon, gui.git),
Bisect: helpers.NewBisectHelper(helperCommon, gui.git), Bisect: helpers.NewBisectHelper(helperCommon, gui.git),
Suggestions: helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions), Suggestions: suggestionsHelper,
Files: helpers.NewFilesHelper(helperCommon, gui.git, osCommand), Files: helpers.NewFilesHelper(helperCommon, gui.git, osCommand),
WorkingTree: helpers.NewWorkingTreeHelper(helperCommon, gui.git, model), WorkingTree: helpers.NewWorkingTreeHelper(helperCommon, gui.git, model),
Tags: helpers.NewTagsHelper(helperCommon, gui.git), Tags: helpers.NewTagsHelper(helperCommon, gui.git),
@ -41,6 +42,7 @@ func (gui *Gui) resetControllers() {
func() *cherrypicking.CherryPicking { return gui.State.Modes.CherryPicking }, func() *cherrypicking.CherryPicking { return gui.State.Modes.CherryPicking },
rebaseHelper, rebaseHelper,
), ),
Upstream: helpers.NewUpstreamHelper(helperCommon, model, suggestionsHelper.GetRemoteBranchesSuggestionsFunc),
} }
gui.CustomCommandsClient = custom_commands.NewClient( gui.CustomCommandsClient = custom_commands.NewClient(
@ -64,7 +66,6 @@ func (gui *Gui) resetControllers() {
syncController := controllers.NewSyncController( syncController := controllers.NewSyncController(
common, common,
gui.getSuggestedRemote,
) )
submodulesController := controllers.NewSubmodulesController( submodulesController := controllers.NewSubmodulesController(

View File

@ -97,9 +97,68 @@ func (self *BranchesController) GetKeybindings(opts types.KeybindingsOpts) []*ty
Handler: self.checkSelectedAndReal(self.rename), Handler: self.checkSelectedAndReal(self.rename),
Description: self.c.Tr.LcRenameBranch, Description: self.c.Tr.LcRenameBranch,
}, },
{
Key: opts.GetKey(opts.Config.Branches.SetUpstream),
Handler: self.checkSelected(self.setUpstream),
Description: self.c.Tr.LcSetUnsetUpstream,
OpensMenu: true,
},
} }
} }
func (self *BranchesController) setUpstream(selectedBranch *models.Branch) error {
return self.c.Menu(types.CreateMenuOptions{
Title: self.c.Tr.Actions.SetUnsetUpstream,
Items: []*types.MenuItem{
{
DisplayStrings: []string{self.c.Tr.LcUnsetUpstream},
OnPress: func() error {
if err := self.git.Branch.UnsetUpstream(selectedBranch.Name); err != nil {
return self.c.Error(err)
}
if err := self.c.Refresh(types.RefreshOptions{
Mode: types.SYNC,
Scope: []types.RefreshableView{
types.BRANCHES,
types.COMMITS,
},
}); err != nil {
return self.c.Error(err)
}
return nil
},
Key: 'u',
},
{
DisplayStrings: []string{self.c.Tr.LcSetUpstream},
OnPress: func() error {
return self.helpers.Upstream.PromptForUpstreamWithoutInitialContent(selectedBranch, func(upstream string) error {
upstreamRemote, upstreamBranch, err := self.helpers.Upstream.ParseUpstream(upstream)
if err != nil {
return self.c.Error(err)
}
if err := self.git.Branch.SetUpstream(upstreamRemote, upstreamBranch, selectedBranch.Name); err != nil {
return self.c.Error(err)
}
if err := self.c.Refresh(types.RefreshOptions{
Mode: types.SYNC,
Scope: []types.RefreshableView{
types.BRANCHES,
types.COMMITS,
},
}); err != nil {
return self.c.Error(err)
}
return nil
})
},
Key: 's',
},
},
})
}
func (self *BranchesController) Context() types.Context { func (self *BranchesController) Context() types.Context {
return self.context() return self.context()
} }

View File

@ -12,6 +12,7 @@ type Helpers struct {
Host *HostHelper Host *HostHelper
PatchBuilding *PatchBuildingHelper PatchBuilding *PatchBuildingHelper
GPG *GpgHelper GPG *GpgHelper
Upstream *UpstreamHelper
} }
func NewStubHelpers() *Helpers { func NewStubHelpers() *Helpers {
@ -27,5 +28,6 @@ func NewStubHelpers() *Helpers {
Host: &HostHelper{}, Host: &HostHelper{},
PatchBuilding: &PatchBuildingHelper{}, PatchBuilding: &PatchBuildingHelper{},
GPG: &GpgHelper{}, GPG: &GpgHelper{},
Upstream: &UpstreamHelper{},
} }
} }

View File

@ -0,0 +1,88 @@
package helpers
import (
"errors"
"strings"
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
type UpstreamHelper struct {
c *types.HelperCommon
model *types.Model
getRemoteBranchesSuggestionsFunc func(string) func(string) []*types.Suggestion
}
type IUpstreamHelper interface {
ParseUpstream(string) (string, string, error)
PromptForUpstreamWithInitialContent(*models.Branch, func(string) error) error
PromptForUpstreamWithoutInitialContent(*models.Branch, func(string) error) error
GetSuggestedRemote() string
}
var _ IUpstreamHelper = &UpstreamHelper{}
func NewUpstreamHelper(
c *types.HelperCommon,
model *types.Model,
getRemoteBranchesSuggestionsFunc func(string) func(string) []*types.Suggestion,
) *UpstreamHelper {
return &UpstreamHelper{
c: c,
model: model,
getRemoteBranchesSuggestionsFunc: getRemoteBranchesSuggestionsFunc,
}
}
func (self *UpstreamHelper) ParseUpstream(upstream string) (string, string, error) {
var upstreamBranch, upstreamRemote string
split := strings.Split(upstream, " ")
if len(split) != 2 {
return "", "", errors.New(self.c.Tr.InvalidUpstream)
}
upstreamRemote = split[0]
upstreamBranch = split[1]
return upstreamRemote, upstreamBranch, nil
}
func (self *UpstreamHelper) promptForUpstream(currentBranch *models.Branch, initialContent string, onConfirm func(string) error) error {
return self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.EnterUpstream,
InitialContent: initialContent,
FindSuggestionsFunc: self.getRemoteBranchesSuggestionsFunc(" "),
HandleConfirm: onConfirm,
})
}
func (self *UpstreamHelper) PromptForUpstreamWithInitialContent(currentBranch *models.Branch, onConfirm func(string) error) error {
suggestedRemote := self.GetSuggestedRemote()
initialContent := suggestedRemote + " " + currentBranch.Name
return self.promptForUpstream(currentBranch, initialContent, onConfirm)
}
func (self *UpstreamHelper) PromptForUpstreamWithoutInitialContent(currentBranch *models.Branch, onConfirm func(string) error) error {
return self.promptForUpstream(currentBranch, "", onConfirm)
}
func (self *UpstreamHelper) GetSuggestedRemote() string {
return getSuggestedRemote(self.model.Remotes)
}
func getSuggestedRemote(remotes []*models.Remote) string {
if len(remotes) == 0 {
return "origin"
}
for _, remote := range remotes {
if remote.Name == "origin" {
return remote.Name
}
}
return remotes[0].Name
}

View File

@ -1,4 +1,4 @@
package gui package helpers
import ( import (
"testing" "testing"

View File

@ -57,7 +57,7 @@ func (self *RemoteBranchesController) GetKeybindings(opts types.KeybindingsOpts)
{ {
Key: opts.GetKey(opts.Config.Branches.SetUpstream), Key: opts.GetKey(opts.Config.Branches.SetUpstream),
Handler: self.checkSelected(self.setAsUpstream), Handler: self.checkSelected(self.setAsUpstream),
Description: self.c.Tr.LcSetUpstream, Description: self.c.Tr.LcSetAsUpstream,
}, },
{ {
Key: opts.GetKey(opts.Config.Universal.Return), Key: opts.GetKey(opts.Config.Universal.Return),

View File

@ -1,7 +1,6 @@
package controllers package controllers
import ( import (
"errors"
"fmt" "fmt"
"strings" "strings"
@ -13,21 +12,16 @@ import (
type SyncController struct { type SyncController struct {
baseController baseController
*controllerCommon *controllerCommon
getSuggestedRemote func() string
} }
var _ types.IController = &SyncController{} var _ types.IController = &SyncController{}
func NewSyncController( func NewSyncController(
common *controllerCommon, common *controllerCommon,
getSuggestedRemote func() string,
) *SyncController { ) *SyncController {
return &SyncController{ return &SyncController{
baseController: baseController{}, baseController: baseController{},
controllerCommon: common, controllerCommon: common,
getSuggestedRemote: getSuggestedRemote,
} }
} }
@ -85,8 +79,8 @@ func (self *SyncController) push(currentBranch *models.Branch) error {
if self.git.Config.GetPushToCurrent() { if self.git.Config.GetPushToCurrent() {
return self.pushAux(pushOpts{setUpstream: true}) return self.pushAux(pushOpts{setUpstream: true})
} else { } else {
return self.promptForUpstream(currentBranch, func(upstream string) error { return self.helpers.Upstream.PromptForUpstreamWithInitialContent(currentBranch, func(upstream string) error {
upstreamRemote, upstreamBranch, err := self.parseUpstream(upstream) upstreamRemote, upstreamBranch, err := self.helpers.Upstream.ParseUpstream(upstream)
if err != nil { if err != nil {
return self.c.Error(err) return self.c.Error(err)
} }
@ -106,7 +100,7 @@ func (self *SyncController) pull(currentBranch *models.Branch) error {
// if we have no upstream branch we need to set that first // if we have no upstream branch we need to set that first
if !currentBranch.IsTrackingRemote() { if !currentBranch.IsTrackingRemote() {
return self.promptForUpstream(currentBranch, func(upstream string) error { return self.helpers.Upstream.PromptForUpstreamWithInitialContent(currentBranch, func(upstream string) error {
if err := self.setCurrentBranchUpstream(upstream); err != nil { if err := self.setCurrentBranchUpstream(upstream); err != nil {
return self.c.Error(err) return self.c.Error(err)
} }
@ -119,7 +113,7 @@ func (self *SyncController) pull(currentBranch *models.Branch) error {
} }
func (self *SyncController) setCurrentBranchUpstream(upstream string) error { func (self *SyncController) setCurrentBranchUpstream(upstream string) error {
upstreamRemote, upstreamBranch, err := self.parseUpstream(upstream) upstreamRemote, upstreamBranch, err := self.helpers.Upstream.ParseUpstream(upstream)
if err != nil { if err != nil {
return err return err
} }
@ -136,30 +130,6 @@ func (self *SyncController) setCurrentBranchUpstream(upstream string) error {
return nil return nil
} }
func (self *SyncController) parseUpstream(upstream string) (string, string, error) {
var upstreamBranch, upstreamRemote string
split := strings.Split(upstream, " ")
if len(split) != 2 {
return "", "", errors.New(self.c.Tr.InvalidUpstream)
}
upstreamRemote = split[0]
upstreamBranch = split[1]
return upstreamRemote, upstreamBranch, nil
}
func (self *SyncController) promptForUpstream(currentBranch *models.Branch, onConfirm func(string) error) error {
suggestedRemote := self.getSuggestedRemote()
return self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.EnterUpstream,
InitialContent: suggestedRemote + " " + currentBranch.Name,
FindSuggestionsFunc: self.helpers.Suggestions.GetRemoteBranchesSuggestionsFunc(" "),
HandleConfirm: onConfirm,
})
}
type PullFilesOptions struct { type PullFilesOptions struct {
UpstreamRemote string UpstreamRemote string
UpstreamBranch string UpstreamBranch string

View File

@ -1,25 +0,0 @@
package gui
import "github.com/jesseduffield/lazygit/pkg/commands/models"
// this file is to put things where it's not obvious where they belong while this refactor takes place
func (gui *Gui) getSuggestedRemote() string {
remotes := gui.State.Model.Remotes
return getSuggestedRemote(remotes)
}
func getSuggestedRemote(remotes []*models.Remote) string {
if len(remotes) == 0 {
return "origin"
}
for _, remote := range remotes {
if remote.Name == "origin" {
return remote.Name
}
}
return remotes[0].Name
}

View File

@ -311,6 +311,7 @@ func chineseTranslationSet() TranslationSet {
DeleteRemoteBranch: "删除远程分支", DeleteRemoteBranch: "删除远程分支",
DeleteRemoteBranchMessage: "您确定要删除远程分支吗?", DeleteRemoteBranchMessage: "您确定要删除远程分支吗?",
LcSetUpstream: "设置为检出分支的上游", LcSetUpstream: "设置为检出分支的上游",
LcSetAsUpstream: "设置为检出分支的上游",
SetUpstreamTitle: "设置上游分支", SetUpstreamTitle: "设置上游分支",
SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?", SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?",
LcEditRemote: "编辑远程仓库", LcEditRemote: "编辑远程仓库",

View File

@ -270,6 +270,7 @@ func dutchTranslationSet() TranslationSet {
DeleteRemoteBranch: "Verwijder Remote Branch", DeleteRemoteBranch: "Verwijder Remote Branch",
DeleteRemoteBranchMessage: "Weet je zeker dat je deze remote branch wilt verwijderen", DeleteRemoteBranchMessage: "Weet je zeker dat je deze remote branch wilt verwijderen",
LcSetUpstream: "stel in als upstream van uitgecheckte branch", LcSetUpstream: "stel in als upstream van uitgecheckte branch",
LcSetAsUpstream: "stel in als upstream van uitgecheckte branch",
SetUpstreamTitle: "Stel in als upstream branch", SetUpstreamTitle: "Stel in als upstream branch",
SetUpstreamMessage: "Weet je zeker dat je de upstream branch van '{{.checkedOut}}' naar '{{.selected}}' wilt zetten", SetUpstreamMessage: "Weet je zeker dat je de upstream branch van '{{.checkedOut}}' naar '{{.selected}}' wilt zetten",
LcEditRemote: "wijzig remote", LcEditRemote: "wijzig remote",

View File

@ -305,7 +305,9 @@ type TranslationSet struct {
LcRemoveRemotePrompt string LcRemoveRemotePrompt string
DeleteRemoteBranch string DeleteRemoteBranch string
DeleteRemoteBranchMessage string DeleteRemoteBranchMessage string
LcSetAsUpstream string
LcSetUpstream string LcSetUpstream string
LcUnsetUpstream string
SetUpstreamTitle string SetUpstreamTitle string
SetUpstreamMessage string SetUpstreamMessage string
LcEditRemote string LcEditRemote string
@ -338,6 +340,7 @@ type TranslationSet struct {
Panel string Panel string
Keybindings string Keybindings string
LcRenameBranch string LcRenameBranch string
LcSetUnsetUpstream string
NewGitFlowBranchPrompt string NewGitFlowBranchPrompt string
RenameBranchWarning string RenameBranchWarning string
LcOpenMenu string LcOpenMenu string
@ -507,6 +510,7 @@ type Actions struct {
Merge string Merge string
RebaseBranch string RebaseBranch string
RenameBranch string RenameBranch string
SetUnsetUpstream string
CreateBranch string CreateBranch string
FastForwardBranch string FastForwardBranch string
CherryPick string CherryPick string
@ -907,7 +911,9 @@ func EnglishTranslationSet() TranslationSet {
LcRemoveRemotePrompt: "Are you sure you want to remove remote", LcRemoveRemotePrompt: "Are you sure you want to remove remote",
DeleteRemoteBranch: "Delete Remote Branch", DeleteRemoteBranch: "Delete Remote Branch",
DeleteRemoteBranchMessage: "Are you sure you want to delete remote branch", DeleteRemoteBranchMessage: "Are you sure you want to delete remote branch",
LcSetUpstream: "set as upstream of checked-out branch", LcSetAsUpstream: "set as upstream of checked-out branch",
LcSetUpstream: "set upstream of selected branch",
LcUnsetUpstream: "unset upstream of selected branch",
SetUpstreamTitle: "Set upstream branch", SetUpstreamTitle: "Set upstream branch",
SetUpstreamMessage: "Are you sure you want to set the upstream branch of '{{.checkedOut}}' to '{{.selected}}'", SetUpstreamMessage: "Are you sure you want to set the upstream branch of '{{.checkedOut}}' to '{{.selected}}'",
LcEditRemote: "edit remote", LcEditRemote: "edit remote",
@ -940,6 +946,7 @@ func EnglishTranslationSet() TranslationSet {
Panel: "Panel", Panel: "Panel",
Keybindings: "Keybindings", Keybindings: "Keybindings",
LcRenameBranch: "rename branch", LcRenameBranch: "rename branch",
LcSetUnsetUpstream: "set/unset upstream",
NewBranchNamePrompt: "Enter new branch name for branch", NewBranchNamePrompt: "Enter new branch name for branch",
RenameBranchWarning: "This branch is tracking a remote. This action will only rename the local branch name, not the name of the remote branch. Continue?", RenameBranchWarning: "This branch is tracking a remote. This action will only rename the local branch name, not the name of the remote branch. Continue?",
LcOpenMenu: "open menu", LcOpenMenu: "open menu",
@ -1091,6 +1098,7 @@ func EnglishTranslationSet() TranslationSet {
Merge: "Merge", Merge: "Merge",
RebaseBranch: "Rebase branch", RebaseBranch: "Rebase branch",
RenameBranch: "Rename branch", RenameBranch: "Rename branch",
SetUnsetUpstream: "Set/unset upstream",
CreateBranch: "Create branch", CreateBranch: "Create branch",
CherryPick: "(Cherry-pick) Paste commits", CherryPick: "(Cherry-pick) Paste commits",
CheckoutFile: "Checkout file", CheckoutFile: "Checkout file",

View File

@ -2,7 +2,5 @@
repositoryformatversion = 0 repositoryformatversion = 0
filemode = true filemode = true
bare = true bare = true
ignorecase = true
precomposeunicode = true
[remote "origin"] [remote "origin"]
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/setUpstream/actual/./repo url = /home/mark/Downloads/gits/lazygit/test/integration/setUpstream/actual/./repo

View File

@ -4,4 +4,3 @@
# exclude patterns (uncomment them if you want to use them): # exclude patterns (uncomment them if you want to use them):
# *.[oa] # *.[oa]
# *~ # *~
.DS_Store

View File

@ -0,0 +1,3 @@
x��A
�0@Q�9�����i
"BW=F�L��!R"����~�����r��*�J��dF��Y)J��Ձ���r�.����0�p���~��6��fw �e ������t��;��uSr?2X,�

View File

@ -1,2 +1,2 @@
# pack-refs with: peeled fully-peeled sorted # pack-refs with: peeled fully-peeled sorted
30ef3df33d31f0b98298881be4dbe69c54758ba2 refs/heads/master ce3220d7b3cbc57811e3e6169349c611f62a7c42 refs/heads/master

View File

@ -1 +1 @@
30ef3df33d31f0b98298881be4dbe69c54758ba2 branch 'master' of ../origin ce3220d7b3cbc57811e3e6169349c611f62a7c42 not-for-merge branch 'master' of ../origin

View File

@ -1 +1 @@
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 ce3220d7b3cbc57811e3e6169349c611f62a7c42

View File

@ -3,8 +3,6 @@
filemode = true filemode = true
bare = false bare = false
logallrefupdates = true logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user] [user]
email = CI@example.com email = CI@example.com
name = CI name = CI

View File

@ -4,4 +4,3 @@
# exclude patterns (uncomment them if you want to use them): # exclude patterns (uncomment them if you want to use them):
# *.[oa] # *.[oa]
# *~ # *~
.DS_Store

View File

@ -1,7 +1,5 @@
0000000000000000000000000000000000000000 6305259d1908bee46b3b686702ed55b6f12e9ba2 CI <CI@example.com> 1648346253 +1100 commit (initial): myfile1 0000000000000000000000000000000000000000 9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 CI <CI@example.com> 1650269554 +0200 commit (initial): myfile1
6305259d1908bee46b3b686702ed55b6f12e9ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 commit: myfile2 9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 commit: myfile2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 c6ffcbed8902934d462722ff6ef471813b9a4df5 CI <CI@example.com> 1648346253 +1100 commit: myfile3 6d51185514ab4f80b42f17013295c261f92a66f0 2758cffdc0d931ff3a3d6c58b75f91ec42981dcf CI <CI@example.com> 1650269554 +0200 commit: myfile3
c6ffcbed8902934d462722ff6ef471813b9a4df5 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346253 +1100 commit: myfile4 2758cffdc0d931ff3a3d6c58b75f91ec42981dcf ce3220d7b3cbc57811e3e6169349c611f62a7c42 CI <CI@example.com> 1650269554 +0200 commit: myfile4
30ef3df33d31f0b98298881be4dbe69c54758ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 reset: moving to HEAD~2 ce3220d7b3cbc57811e3e6169349c611f62a7c42 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 reset: moving to HEAD~2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346262 +1100 rebase -i (start): checkout 30ef3df33d31f0b98298881be4dbe69c54758ba2
30ef3df33d31f0b98298881be4dbe69c54758ba2 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346262 +1100 rebase -i (finish): returning to refs/heads/master

View File

@ -1,6 +1,5 @@
0000000000000000000000000000000000000000 6305259d1908bee46b3b686702ed55b6f12e9ba2 CI <CI@example.com> 1648346253 +1100 commit (initial): myfile1 0000000000000000000000000000000000000000 9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 CI <CI@example.com> 1650269554 +0200 commit (initial): myfile1
6305259d1908bee46b3b686702ed55b6f12e9ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 commit: myfile2 9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 commit: myfile2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 c6ffcbed8902934d462722ff6ef471813b9a4df5 CI <CI@example.com> 1648346253 +1100 commit: myfile3 6d51185514ab4f80b42f17013295c261f92a66f0 2758cffdc0d931ff3a3d6c58b75f91ec42981dcf CI <CI@example.com> 1650269554 +0200 commit: myfile3
c6ffcbed8902934d462722ff6ef471813b9a4df5 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346253 +1100 commit: myfile4 2758cffdc0d931ff3a3d6c58b75f91ec42981dcf ce3220d7b3cbc57811e3e6169349c611f62a7c42 CI <CI@example.com> 1650269554 +0200 commit: myfile4
30ef3df33d31f0b98298881be4dbe69c54758ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 reset: moving to HEAD~2 ce3220d7b3cbc57811e3e6169349c611f62a7c42 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 reset: moving to HEAD~2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346262 +1100 rebase -i (finish): refs/heads/master onto 30ef3df33d31f0b98298881be4dbe69c54758ba2

View File

@ -1 +1 @@
0000000000000000000000000000000000000000 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346260 +1100 fetch origin: storing head 0000000000000000000000000000000000000000 ce3220d7b3cbc57811e3e6169349c611f62a7c42 CI <CI@example.com> 1650269559 +0200 fetch origin: storing head

View File

@ -0,0 +1,3 @@
x��A
�0@Q�9�����i
"BW=F�L��!R"����~�����r��*�J��dF��Y)J��Ձ���r�.����0�p���~��6��fw �e ������t��;��uSr?2X,�

View File

@ -1 +1 @@
30ef3df33d31f0b98298881be4dbe69c54758ba2 6d51185514ab4f80b42f17013295c261f92a66f0

View File

@ -1 +1 @@
30ef3df33d31f0b98298881be4dbe69c54758ba2 ce3220d7b3cbc57811e3e6169349c611f62a7c42

View File

@ -1 +1 @@
{"KeyEvents":[{"Timestamp":808,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1221,"Mod":0,"Key":256,"Ch":93},{"Timestamp":1598,"Mod":0,"Key":256,"Ch":110},{"Timestamp":2267,"Mod":0,"Key":256,"Ch":111},{"Timestamp":2399,"Mod":0,"Key":256,"Ch":114},{"Timestamp":2500,"Mod":0,"Key":256,"Ch":105},{"Timestamp":2573,"Mod":0,"Key":256,"Ch":103},{"Timestamp":2634,"Mod":0,"Key":256,"Ch":105},{"Timestamp":2710,"Mod":0,"Key":256,"Ch":110},{"Timestamp":3042,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3671,"Mod":0,"Key":256,"Ch":46},{"Timestamp":4001,"Mod":0,"Key":256,"Ch":46},{"Timestamp":4215,"Mod":0,"Key":256,"Ch":47},{"Timestamp":4511,"Mod":0,"Key":256,"Ch":111},{"Timestamp":4896,"Mod":0,"Key":256,"Ch":114},{"Timestamp":5008,"Mod":0,"Key":256,"Ch":105},{"Timestamp":5133,"Mod":0,"Key":256,"Ch":103},{"Timestamp":5202,"Mod":0,"Key":256,"Ch":105},{"Timestamp":5255,"Mod":0,"Key":256,"Ch":110},{"Timestamp":5558,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6247,"Mod":0,"Key":256,"Ch":102},{"Timestamp":7072,"Mod":0,"Key":256,"Ch":91},{"Timestamp":7716,"Mod":0,"Key":256,"Ch":112},{"Timestamp":8319,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9159,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":254,"Height":74}]} {"KeyEvents":[{"Timestamp":558,"Mod":0,"Key":256,"Ch":108},{"Timestamp":992,"Mod":0,"Key":256,"Ch":93},{"Timestamp":1583,"Mod":0,"Key":256,"Ch":110},{"Timestamp":2109,"Mod":0,"Key":256,"Ch":111},{"Timestamp":2232,"Mod":0,"Key":256,"Ch":114},{"Timestamp":2278,"Mod":0,"Key":256,"Ch":105},{"Timestamp":2413,"Mod":0,"Key":256,"Ch":103},{"Timestamp":2478,"Mod":0,"Key":256,"Ch":105},{"Timestamp":2538,"Mod":0,"Key":256,"Ch":110},{"Timestamp":2831,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3060,"Mod":0,"Key":256,"Ch":46},{"Timestamp":3234,"Mod":0,"Key":256,"Ch":46},{"Timestamp":3293,"Mod":0,"Key":256,"Ch":47},{"Timestamp":3454,"Mod":0,"Key":256,"Ch":111},{"Timestamp":3594,"Mod":0,"Key":256,"Ch":114},{"Timestamp":3632,"Mod":0,"Key":256,"Ch":105},{"Timestamp":3780,"Mod":0,"Key":256,"Ch":103},{"Timestamp":3831,"Mod":0,"Key":256,"Ch":105},{"Timestamp":3890,"Mod":0,"Key":256,"Ch":110},{"Timestamp":4150,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4695,"Mod":0,"Key":256,"Ch":102},{"Timestamp":5433,"Mod":0,"Key":256,"Ch":91},{"Timestamp":6106,"Mod":0,"Key":256,"Ch":117},{"Timestamp":6884,"Mod":0,"Key":256,"Ch":115},{"Timestamp":7833,"Mod":0,"Key":9,"Ch":9},{"Timestamp":8301,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9114,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":239,"Height":55}]}

View File

@ -0,0 +1 @@
ref: refs/heads/master

View File

@ -0,0 +1,8 @@
[core]
repositoryformatversion = 0
filemode = true
bare = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/setUpstream/actual/./repo

View File

@ -0,0 +1 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -0,0 +1,7 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
.DS_Store

View File

@ -0,0 +1,2 @@
# pack-refs with: peeled fully-peeled sorted
30ef3df33d31f0b98298881be4dbe69c54758ba2 refs/heads/master

View File

@ -0,0 +1 @@
30ef3df33d31f0b98298881be4dbe69c54758ba2 branch 'master' of ../origin

View File

@ -0,0 +1 @@
ref: refs/heads/master

View File

@ -0,0 +1 @@
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2

View File

@ -0,0 +1,16 @@
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = CI@example.com
name = CI
[remote "origin"]
url = ../origin
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

View File

@ -0,0 +1 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -0,0 +1,7 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
.DS_Store

View File

@ -0,0 +1,7 @@
0000000000000000000000000000000000000000 6305259d1908bee46b3b686702ed55b6f12e9ba2 CI <CI@example.com> 1648346253 +1100 commit (initial): myfile1
6305259d1908bee46b3b686702ed55b6f12e9ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 commit: myfile2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 c6ffcbed8902934d462722ff6ef471813b9a4df5 CI <CI@example.com> 1648346253 +1100 commit: myfile3
c6ffcbed8902934d462722ff6ef471813b9a4df5 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346253 +1100 commit: myfile4
30ef3df33d31f0b98298881be4dbe69c54758ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 reset: moving to HEAD~2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346262 +1100 rebase -i (start): checkout 30ef3df33d31f0b98298881be4dbe69c54758ba2
30ef3df33d31f0b98298881be4dbe69c54758ba2 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346262 +1100 rebase -i (finish): returning to refs/heads/master

View File

@ -0,0 +1,6 @@
0000000000000000000000000000000000000000 6305259d1908bee46b3b686702ed55b6f12e9ba2 CI <CI@example.com> 1648346253 +1100 commit (initial): myfile1
6305259d1908bee46b3b686702ed55b6f12e9ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 commit: myfile2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 c6ffcbed8902934d462722ff6ef471813b9a4df5 CI <CI@example.com> 1648346253 +1100 commit: myfile3
c6ffcbed8902934d462722ff6ef471813b9a4df5 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346253 +1100 commit: myfile4
30ef3df33d31f0b98298881be4dbe69c54758ba2 a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 CI <CI@example.com> 1648346253 +1100 reset: moving to HEAD~2
a26a9d22097eb77a8cf2fbb18512aa44c0c536a2 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346262 +1100 rebase -i (finish): refs/heads/master onto 30ef3df33d31f0b98298881be4dbe69c54758ba2

View File

@ -0,0 +1 @@
0000000000000000000000000000000000000000 30ef3df33d31f0b98298881be4dbe69c54758ba2 CI <CI@example.com> 1648346260 +1100 fetch origin: storing head

View File

@ -0,0 +1 @@
30ef3df33d31f0b98298881be4dbe69c54758ba2

View File

@ -0,0 +1 @@
30ef3df33d31f0b98298881be4dbe69c54758ba2

View File

@ -0,0 +1 @@
test1

View File

@ -0,0 +1 @@
test2

View File

@ -0,0 +1 @@
{"KeyEvents":[{"Timestamp":808,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1221,"Mod":0,"Key":256,"Ch":93},{"Timestamp":1598,"Mod":0,"Key":256,"Ch":110},{"Timestamp":2267,"Mod":0,"Key":256,"Ch":111},{"Timestamp":2399,"Mod":0,"Key":256,"Ch":114},{"Timestamp":2500,"Mod":0,"Key":256,"Ch":105},{"Timestamp":2573,"Mod":0,"Key":256,"Ch":103},{"Timestamp":2634,"Mod":0,"Key":256,"Ch":105},{"Timestamp":2710,"Mod":0,"Key":256,"Ch":110},{"Timestamp":3042,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3671,"Mod":0,"Key":256,"Ch":46},{"Timestamp":4001,"Mod":0,"Key":256,"Ch":46},{"Timestamp":4215,"Mod":0,"Key":256,"Ch":47},{"Timestamp":4511,"Mod":0,"Key":256,"Ch":111},{"Timestamp":4896,"Mod":0,"Key":256,"Ch":114},{"Timestamp":5008,"Mod":0,"Key":256,"Ch":105},{"Timestamp":5133,"Mod":0,"Key":256,"Ch":103},{"Timestamp":5202,"Mod":0,"Key":256,"Ch":105},{"Timestamp":5255,"Mod":0,"Key":256,"Ch":110},{"Timestamp":5558,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6247,"Mod":0,"Key":256,"Ch":102},{"Timestamp":7072,"Mod":0,"Key":256,"Ch":91},{"Timestamp":7716,"Mod":0,"Key":256,"Ch":112},{"Timestamp":8319,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9159,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":254,"Height":74}]}

View File

@ -0,0 +1,32 @@
#!/bin/sh
set -e
set -e
cd $1
git init
git config user.email "CI@example.com"
git config user.name "CI"
echo test1 > myfile1
git add .
git commit -am "myfile1"
echo test2 > myfile2
git add .
git commit -am "myfile2"
echo test3 > myfile3
git add .
git commit -am "myfile3"
echo test4 > myfile4
git add .
git commit -am "myfile4"
cd ..
git clone --bare ./repo origin
cd repo
git reset --hard HEAD~2

View File

@ -0,0 +1 @@
{ "description": "allow setting the upstream of the current branch when pushing", "speed": 10 }

View File

@ -0,0 +1 @@
ref: refs/heads/master

View File

@ -0,0 +1,6 @@
[core]
repositoryformatversion = 0
filemode = true
bare = true
[remote "origin"]
url = /home/mark/Downloads/gits/lazygit/test/integration/unsetUpstream/actual/./repo

View File

@ -0,0 +1 @@
Unnamed repository; edit this file 'description' to name the repository.

View File

@ -0,0 +1,6 @@
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

View File

@ -0,0 +1,3 @@
x��A
�0@Q�9�����I
"BW=F�L��!R"����~�����r��*�J��d ��¬�D��j���E��<x����v�f�M�C?�^�^r�;� �e ������t��;��uSr?3�,�

View File

@ -0,0 +1,2 @@
x��K
�0@]��d&�/�]��t�cK����Gp������-(�S�U�N��@su�U�*3qMX��d�?X�l���CDBeV���P��sv)d��f��k�����a��G���KY�

Some files were not shown because too many files have changed in this diff Show More