diff options
-rw-r--r-- | bug/bug.go | 15 | ||||
-rw-r--r-- | bug/bug_actions_test.go | 8 | ||||
-rw-r--r-- | bug/bug_test.go | 6 | ||||
-rw-r--r-- | bug/clocks.go | 4 | ||||
-rw-r--r-- | bug/interface.go | 4 | ||||
-rw-r--r-- | repository/git.go | 8 | ||||
-rw-r--r-- | repository/mock_repo.go | 4 | ||||
-rw-r--r-- | repository/repo.go | 8 |
8 files changed, 34 insertions, 23 deletions
@@ -160,7 +160,7 @@ func readBug(repo repository.ClockedRepo, ref string) (*Bug, error) { rootFound = true } if strings.HasPrefix(entry.Name, createClockEntryPrefix) { - n, err := fmt.Sscanf(string(entry.Name), createClockEntryPattern, &createTime) + n, err := fmt.Sscanf(entry.Name, createClockEntryPattern, &createTime) if err != nil { return nil, errors.Wrap(err, "can't read create lamport time") } @@ -169,7 +169,7 @@ func readBug(repo repository.ClockedRepo, ref string) (*Bug, error) { } } if strings.HasPrefix(entry.Name, editClockEntryPrefix) { - n, err := fmt.Sscanf(string(entry.Name), editClockEntryPattern, &editTime) + n, err := fmt.Sscanf(entry.Name, editClockEntryPattern, &editTime) if err != nil { return nil, errors.Wrap(err, "can't read edit lamport time") } @@ -197,10 +197,10 @@ func readBug(repo repository.ClockedRepo, ref string) (*Bug, error) { } // Update the clocks - if err := repo.CreateWitness(bug.createTime); err != nil { + if err := repo.WitnessCreate(bug.createTime); err != nil { return nil, errors.Wrap(err, "failed to update create lamport clock") } - if err := repo.EditWitness(bug.editTime); err != nil { + if err := repo.WitnessEdit(bug.editTime); err != nil { return nil, errors.Wrap(err, "failed to update edit lamport clock") } @@ -350,11 +350,6 @@ func (bug *Bug) Append(op Operation) { bug.staging.Append(op) } -// HasPendingOp tell if the bug need to be committed -func (bug *Bug) HasPendingOp() bool { - return !bug.staging.IsEmpty() -} - // Commit write the staging area in Git and move the operations to the packs func (bug *Bug) Commit(repo repository.ClockedRepo) error { @@ -592,6 +587,8 @@ func (bug *Bug) Merge(repo repository.Repo, other Interface) (bool, error) { bug.lastCommit = hash } + bug.packs = newPacks + // Update the git ref err = repo.UpdateRef(bugsRefPattern+bug.id.String(), bug.lastCommit) if err != nil { diff --git a/bug/bug_actions_test.go b/bug/bug_actions_test.go index 4bc58aea..38dddce2 100644 --- a/bug/bug_actions_test.go +++ b/bug/bug_actions_test.go @@ -4,6 +4,7 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/MichaelMure/git-bug/identity" @@ -18,8 +19,10 @@ func TestPushPull(t *testing.T) { bug1, _, err := Create(reneA, time.Now().Unix(), "bug1", "message") require.NoError(t, err) + assert.True(t, bug1.NeedCommit()) err = bug1.Commit(repoA) require.NoError(t, err) + assert.False(t, bug1.NeedCommit()) // distribute the identity _, err = identity.Push(repoA, "origin") @@ -91,8 +94,10 @@ func _RebaseTheirs(t testing.TB) { bug1, _, err := Create(reneA, time.Now().Unix(), "bug1", "message") require.NoError(t, err) + assert.True(t, bug1.NeedCommit()) err = bug1.Commit(repoA) require.NoError(t, err) + assert.False(t, bug1.NeedCommit()) // distribute the identity _, err = identity.Push(repoA, "origin") @@ -111,18 +116,21 @@ func _RebaseTheirs(t testing.TB) { bug2, err := ReadLocalBug(repoB, bug1.Id()) require.NoError(t, err) + assert.False(t, bug2.NeedCommit()) reneB, err := identity.ReadLocal(repoA, reneA.Id()) require.NoError(t, err) _, err = AddComment(bug2, reneB, time.Now().Unix(), "message2") require.NoError(t, err) + assert.True(t, bug2.NeedCommit()) _, err = AddComment(bug2, reneB, time.Now().Unix(), "message3") require.NoError(t, err) _, err = AddComment(bug2, reneB, time.Now().Unix(), "message4") require.NoError(t, err) err = bug2.Commit(repoB) require.NoError(t, err) + assert.False(t, bug2.NeedCommit()) // B --> remote _, err = Push(repoB, "origin") diff --git a/bug/bug_test.go b/bug/bug_test.go index 4e8a9440..35e8a395 100644 --- a/bug/bug_test.go +++ b/bug/bug_test.go @@ -78,8 +78,11 @@ func TestBugCommitLoad(t *testing.T) { repo := repository.NewMockRepoForTest() + assert.True(t, bug1.NeedCommit()) + err := bug1.Commit(repo) assert.Nil(t, err) + assert.False(t, bug1.NeedCommit()) bug2, err := ReadLocalBug(repo, bug1.Id()) assert.NoError(t, err) @@ -90,8 +93,11 @@ func TestBugCommitLoad(t *testing.T) { bug1.Append(setTitleOp) bug1.Append(addCommentOp) + assert.True(t, bug1.NeedCommit()) + err = bug1.Commit(repo) assert.Nil(t, err) + assert.False(t, bug1.NeedCommit()) bug3, err := ReadLocalBug(repo, bug1.Id()) assert.NoError(t, err) diff --git a/bug/clocks.go b/bug/clocks.go index bb3d81f0..52d23544 100644 --- a/bug/clocks.go +++ b/bug/clocks.go @@ -12,12 +12,12 @@ func Witnesser(repo repository.ClockedRepo) error { return b.Err } - err := repo.CreateWitness(b.Bug.createTime) + err := repo.WitnessCreate(b.Bug.createTime) if err != nil { return err } - err = repo.EditWitness(b.Bug.editTime) + err = repo.WitnessEdit(b.Bug.editTime) if err != nil { return err } diff --git a/bug/interface.go b/bug/interface.go index 8266e99e..796ee569 100644 --- a/bug/interface.go +++ b/bug/interface.go @@ -16,8 +16,8 @@ type Interface interface { // Append an operation into the staging area, to be committed later Append(op Operation) - // Append an operation into the staging area, to be committed later - HasPendingOp() bool + // Indicate that the in-memory state changed and need to be commit in the repository + NeedCommit() bool // Commit write the staging area in Git and move the operations to the packs Commit(repo repository.ClockedRepo) error diff --git a/repository/git.go b/repository/git.go index 2c72fccd..d4560805 100644 --- a/repository/git.go +++ b/repository/git.go @@ -461,14 +461,14 @@ func (repo *GitRepo) EditTimeIncrement() (lamport.Time, error) { return repo.editClock.Increment() } -// CreateWitness witness another create time and increment the corresponding clock +// WitnessCreate witness another create time and increment the corresponding clock // if needed. -func (repo *GitRepo) CreateWitness(time lamport.Time) error { +func (repo *GitRepo) WitnessCreate(time lamport.Time) error { return repo.createClock.Witness(time) } -// EditWitness witness another edition time and increment the corresponding clock +// WitnessEdit witness another edition time and increment the corresponding clock // if needed. -func (repo *GitRepo) EditWitness(time lamport.Time) error { +func (repo *GitRepo) WitnessEdit(time lamport.Time) error { return repo.editClock.Witness(time) } diff --git a/repository/mock_repo.go b/repository/mock_repo.go index 26c02ede..88c5a132 100644 --- a/repository/mock_repo.go +++ b/repository/mock_repo.go @@ -236,12 +236,12 @@ func (r *mockRepoForTest) EditTimeIncrement() (lamport.Time, error) { return r.editClock.Increment(), nil } -func (r *mockRepoForTest) CreateWitness(time lamport.Time) error { +func (r *mockRepoForTest) WitnessCreate(time lamport.Time) error { r.createClock.Witness(time) return nil } -func (r *mockRepoForTest) EditWitness(time lamport.Time) error { +func (r *mockRepoForTest) WitnessEdit(time lamport.Time) error { r.editClock.Witness(time) return nil } diff --git a/repository/repo.go b/repository/repo.go index e8c67a5e..71bd7a8e 100644 --- a/repository/repo.go +++ b/repository/repo.go @@ -111,13 +111,13 @@ type ClockedRepo interface { // EditTimeIncrement increment the edit clock and return the new value. EditTimeIncrement() (lamport.Time, error) - // CreateWitness witness another create time and increment the corresponding + // WitnessCreate witness another create time and increment the corresponding // clock if needed. - CreateWitness(time lamport.Time) error + WitnessCreate(time lamport.Time) error - // EditWitness witness another edition time and increment the corresponding + // WitnessEdit witness another edition time and increment the corresponding // clock if needed. - EditWitness(time lamport.Time) error + WitnessEdit(time lamport.Time) error } // Witnesser is a function that will initialize the clocks of a repo |