diff options
Diffstat (limited to 'pkg/commands/models/branch.go')
-rw-r--r-- | pkg/commands/models/branch.go | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/pkg/commands/models/branch.go b/pkg/commands/models/branch.go index c5fcfdaed..25d806fca 100644 --- a/pkg/commands/models/branch.go +++ b/pkg/commands/models/branch.go @@ -10,10 +10,14 @@ type Branch struct { DisplayName string // indicator of when the branch was last checked out e.g. '2d', '3m' Recency string - // how many commits ahead we are from the remote branch (how many commits we can push) - Pushables string + // how many commits ahead we are from the remote branch (how many commits we can push, assuming we push to our tracked remote branch) + AheadForPull string // how many commits behind we are from the remote branch (how many commits we can pull) - Pullables string + BehindForPull string + // how many commits ahead we are from the branch we're pushing to (which might not be the same as our upstream branch in a triangular workflow) + AheadForPush string + // how many commits behind we are from the branch we're pushing to (which might not be the same as our upstream branch in a triangular workflow) + BehindForPush string // whether the remote branch is 'gone' i.e. we're tracking a remote branch that has been deleted UpstreamGone bool // whether this is the current branch. Exactly one branch should have this be true @@ -80,26 +84,30 @@ func (b *Branch) IsTrackingRemote() bool { // we know that the remote branch is not stored locally based on our pushable/pullable // count being question marks. func (b *Branch) RemoteBranchStoredLocally() bool { - return b.IsTrackingRemote() && b.Pushables != "?" && b.Pullables != "?" + return b.IsTrackingRemote() && b.AheadForPull != "?" && b.BehindForPull != "?" } func (b *Branch) RemoteBranchNotStoredLocally() bool { - return b.IsTrackingRemote() && b.Pushables == "?" && b.Pullables == "?" + return b.IsTrackingRemote() && b.AheadForPull == "?" && b.BehindForPull == "?" } func (b *Branch) MatchesUpstream() bool { - return b.RemoteBranchStoredLocally() && b.Pushables == "0" && b.Pullables == "0" + return b.RemoteBranchStoredLocally() && b.AheadForPull == "0" && b.BehindForPull == "0" } -func (b *Branch) HasCommitsToPush() bool { - return b.RemoteBranchStoredLocally() && b.Pushables != "0" +func (b *Branch) IsAheadForPull() bool { + return b.RemoteBranchStoredLocally() && b.AheadForPull != "0" } -func (b *Branch) HasCommitsToPull() bool { - return b.RemoteBranchStoredLocally() && b.Pullables != "0" +func (b *Branch) IsBehindForPull() bool { + return b.RemoteBranchStoredLocally() && b.BehindForPull != "0" +} + +func (b *Branch) IsBehindForPush() bool { + return b.BehindForPush != "" && b.BehindForPush != "0" } // for when we're in a detached head state func (b *Branch) IsRealBranch() bool { - return b.Pushables != "" && b.Pullables != "" + return b.AheadForPull != "" && b.BehindForPull != "" } |