1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-17 00:18:05 +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>g</kbd>: view reset options
<kbd>R</kbd>: rename branch
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: view commits
</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>g</kbd>: bekijk reset opties
<kbd>R</kbd>: hernoem branch
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: bekijk commits
</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>g</kbd>: wyświetl opcje resetu
<kbd>R</kbd>: rename branch
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: view commits
</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>g</kbd>: 查看重置选项
<kbd>R</kbd>: 重命名分支
<kbd>u</kbd>: set/unset upstream
<kbd>enter</kbd>: 查看提交
</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()
}
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) {
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)
suggestionsHelper := helpers.NewSuggestionsHelper(helperCommon, model, gui.refreshSuggestions)
gui.helpers = &helpers.Helpers{
Refs: refsHelper,
Host: helpers.NewHostHelper(helperCommon, gui.git),
PatchBuilding: helpers.NewPatchBuildingHelper(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),
WorkingTree: helpers.NewWorkingTreeHelper(helperCommon, gui.git, model),
Tags: helpers.NewTagsHelper(helperCommon, gui.git),
@ -41,6 +42,7 @@ func (gui *Gui) resetControllers() {
func() *cherrypicking.CherryPicking { return gui.State.Modes.CherryPicking },
rebaseHelper,
),
Upstream: helpers.NewUpstreamHelper(helperCommon, model, suggestionsHelper.GetRemoteBranchesSuggestionsFunc),
}
gui.CustomCommandsClient = custom_commands.NewClient(
@ -64,7 +66,6 @@ func (gui *Gui) resetControllers() {
syncController := controllers.NewSyncController(
common,
gui.getSuggestedRemote,
)
submodulesController := controllers.NewSubmodulesController(

View File

@ -97,9 +97,68 @@ func (self *BranchesController) GetKeybindings(opts types.KeybindingsOpts) []*ty
Handler: self.checkSelectedAndReal(self.rename),
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 {
return self.context()
}

View File

@ -12,6 +12,7 @@ type Helpers struct {
Host *HostHelper
PatchBuilding *PatchBuildingHelper
GPG *GpgHelper
Upstream *UpstreamHelper
}
func NewStubHelpers() *Helpers {
@ -27,5 +28,6 @@ func NewStubHelpers() *Helpers {
Host: &HostHelper{},
PatchBuilding: &PatchBuildingHelper{},
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 (
"testing"

View File

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

View File

@ -1,7 +1,6 @@
package controllers
import (
"errors"
"fmt"
"strings"
@ -13,21 +12,16 @@ import (
type SyncController struct {
baseController
*controllerCommon
getSuggestedRemote func() string
}
var _ types.IController = &SyncController{}
func NewSyncController(
common *controllerCommon,
getSuggestedRemote func() string,
) *SyncController {
return &SyncController{
baseController: baseController{},
controllerCommon: common,
getSuggestedRemote: getSuggestedRemote,
}
}
@ -85,8 +79,8 @@ func (self *SyncController) push(currentBranch *models.Branch) error {
if self.git.Config.GetPushToCurrent() {
return self.pushAux(pushOpts{setUpstream: true})
} else {
return self.promptForUpstream(currentBranch, func(upstream string) error {
upstreamRemote, upstreamBranch, err := self.parseUpstream(upstream)
return self.helpers.Upstream.PromptForUpstreamWithInitialContent(currentBranch, func(upstream string) error {
upstreamRemote, upstreamBranch, err := self.helpers.Upstream.ParseUpstream(upstream)
if err != nil {
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 !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 {
return self.c.Error(err)
}
@ -119,7 +113,7 @@ func (self *SyncController) pull(currentBranch *models.Branch) 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 {
return err
}
@ -136,30 +130,6 @@ func (self *SyncController) setCurrentBranchUpstream(upstream string) error {
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 {
UpstreamRemote 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: "删除远程分支",
DeleteRemoteBranchMessage: "您确定要删除远程分支吗?",
LcSetUpstream: "设置为检出分支的上游",
LcSetAsUpstream: "设置为检出分支的上游",
SetUpstreamTitle: "设置上游分支",
SetUpstreamMessage: "您确定要将 {{.checkedOut}} 的上游分支设置为 {{.selected}} 吗?",
LcEditRemote: "编辑远程仓库",

View File

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

View File

@ -305,7 +305,9 @@ type TranslationSet struct {
LcRemoveRemotePrompt string
DeleteRemoteBranch string
DeleteRemoteBranchMessage string
LcSetAsUpstream string
LcSetUpstream string
LcUnsetUpstream string
SetUpstreamTitle string
SetUpstreamMessage string
LcEditRemote string
@ -338,6 +340,7 @@ type TranslationSet struct {
Panel string
Keybindings string
LcRenameBranch string
LcSetUnsetUpstream string
NewGitFlowBranchPrompt string
RenameBranchWarning string
LcOpenMenu string
@ -507,6 +510,7 @@ type Actions struct {
Merge string
RebaseBranch string
RenameBranch string
SetUnsetUpstream string
CreateBranch string
FastForwardBranch string
CherryPick string
@ -907,7 +911,9 @@ func EnglishTranslationSet() TranslationSet {
LcRemoveRemotePrompt: "Are you sure you want to remove remote",
DeleteRemoteBranch: "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",
SetUpstreamMessage: "Are you sure you want to set the upstream branch of '{{.checkedOut}}' to '{{.selected}}'",
LcEditRemote: "edit remote",
@ -940,6 +946,7 @@ func EnglishTranslationSet() TranslationSet {
Panel: "Panel",
Keybindings: "Keybindings",
LcRenameBranch: "rename branch",
LcSetUnsetUpstream: "set/unset upstream",
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?",
LcOpenMenu: "open menu",
@ -1091,6 +1098,7 @@ func EnglishTranslationSet() TranslationSet {
Merge: "Merge",
RebaseBranch: "Rebase branch",
RenameBranch: "Rename branch",
SetUnsetUpstream: "Set/unset upstream",
CreateBranch: "Create branch",
CherryPick: "(Cherry-pick) Paste commits",
CheckoutFile: "Checkout file",

View File

@ -2,7 +2,5 @@
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
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):
# *.[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
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
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[user]
email = CI@example.com
name = CI

View File

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

View File

@ -1,7 +1,5 @@
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
0000000000000000000000000000000000000000 9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 CI <CI@example.com> 1650269554 +0200 commit (initial): myfile1
9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 commit: myfile2
6d51185514ab4f80b42f17013295c261f92a66f0 2758cffdc0d931ff3a3d6c58b75f91ec42981dcf CI <CI@example.com> 1650269554 +0200 commit: myfile3
2758cffdc0d931ff3a3d6c58b75f91ec42981dcf ce3220d7b3cbc57811e3e6169349c611f62a7c42 CI <CI@example.com> 1650269554 +0200 commit: myfile4
ce3220d7b3cbc57811e3e6169349c611f62a7c42 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 reset: moving to HEAD~2

View File

@ -1,6 +1,5 @@
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
0000000000000000000000000000000000000000 9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 CI <CI@example.com> 1650269554 +0200 commit (initial): myfile1
9c663d29d26a71dd67e3bf7b1f2ea73f4939d9e0 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 commit: myfile2
6d51185514ab4f80b42f17013295c261f92a66f0 2758cffdc0d931ff3a3d6c58b75f91ec42981dcf CI <CI@example.com> 1650269554 +0200 commit: myfile3
2758cffdc0d931ff3a3d6c58b75f91ec42981dcf ce3220d7b3cbc57811e3e6169349c611f62a7c42 CI <CI@example.com> 1650269554 +0200 commit: myfile4
ce3220d7b3cbc57811e3e6169349c611f62a7c42 6d51185514ab4f80b42f17013295c261f92a66f0 CI <CI@example.com> 1650269554 +0200 reset: moving to HEAD~2

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