aboutsummaryrefslogtreecommitdiffstats
path: root/bug
diff options
context:
space:
mode:
Diffstat (limited to 'bug')
-rw-r--r--bug/bug.go27
-rw-r--r--bug/bug_actions_test.go16
-rw-r--r--bug/clocks.go42
-rw-r--r--bug/operation_test.go2
4 files changed, 58 insertions, 29 deletions
diff --git a/bug/bug.go b/bug/bug.go
index e3378770..66609e6c 100644
--- a/bug/bug.go
+++ b/bug/bug.go
@@ -27,6 +27,9 @@ const createClockEntryPattern = "create-clock-%d"
const editClockEntryPrefix = "edit-clock-"
const editClockEntryPattern = "edit-clock-%d"
+const creationClockName = "bug-create"
+const editClockName = "bug-edit"
+
var ErrBugNotExist = errors.New("bug doesn't exist")
func NewErrMultipleMatchBug(matching []entity.Id) *entity.ErrMultipleMatch {
@@ -197,10 +200,18 @@ func readBug(repo repository.ClockedRepo, ref string) (*Bug, error) {
}
// Update the clocks
- if err := repo.WitnessCreate(bug.createTime); err != nil {
+ createClock, err := repo.GetOrCreateClock(creationClockName)
+ if err != nil {
+ return nil, err
+ }
+ if err := createClock.Witness(bug.createTime); err != nil {
return nil, errors.Wrap(err, "failed to update create lamport clock")
}
- if err := repo.WitnessEdit(bug.editTime); err != nil {
+ editClock, err := repo.GetOrCreateClock(editClockName)
+ if err != nil {
+ return nil, err
+ }
+ if err := editClock.Witness(bug.editTime); err != nil {
return nil, errors.Wrap(err, "failed to update edit lamport clock")
}
@@ -412,7 +423,11 @@ func (bug *Bug) Commit(repo repository.ClockedRepo) error {
return err
}
- bug.editTime, err = repo.EditTimeIncrement()
+ editClock, err := repo.GetOrCreateClock(editClockName)
+ if err != nil {
+ return err
+ }
+ bug.editTime, err = editClock.Increment()
if err != nil {
return err
}
@@ -423,7 +438,11 @@ func (bug *Bug) Commit(repo repository.ClockedRepo) error {
Name: fmt.Sprintf(editClockEntryPattern, bug.editTime),
})
if bug.lastCommit == "" {
- bug.createTime, err = repo.CreateTimeIncrement()
+ createClock, err := repo.GetOrCreateClock(creationClockName)
+ if err != nil {
+ return err
+ }
+ bug.createTime, err = createClock.Increment()
if err != nil {
return err
}
diff --git a/bug/bug_actions_test.go b/bug/bug_actions_test.go
index 38dddce2..c867ac80 100644
--- a/bug/bug_actions_test.go
+++ b/bug/bug_actions_test.go
@@ -12,8 +12,8 @@ import (
)
func TestPushPull(t *testing.T) {
- repoA, repoB, remote := repository.SetupReposAndRemote(t)
- defer repository.CleanupTestRepos(t, repoA, repoB, remote)
+ repoA, repoB, remote := repository.SetupReposAndRemote()
+ defer repository.CleanupTestRepos(repoA, repoB, remote)
reneA := identity.NewIdentity("René Descartes", "rene@descartes.fr")
@@ -87,8 +87,8 @@ func BenchmarkRebaseTheirs(b *testing.B) {
}
func _RebaseTheirs(t testing.TB) {
- repoA, repoB, remote := repository.SetupReposAndRemote(t)
- defer repository.CleanupTestRepos(t, repoA, repoB, remote)
+ repoA, repoB, remote := repository.SetupReposAndRemote()
+ defer repository.CleanupTestRepos(repoA, repoB, remote)
reneA := identity.NewIdentity("René Descartes", "rene@descartes.fr")
@@ -165,8 +165,8 @@ func BenchmarkRebaseOurs(b *testing.B) {
}
func _RebaseOurs(t testing.TB) {
- repoA, repoB, remote := repository.SetupReposAndRemote(t)
- defer repository.CleanupTestRepos(t, repoA, repoB, remote)
+ repoA, repoB, remote := repository.SetupReposAndRemote()
+ defer repository.CleanupTestRepos(repoA, repoB, remote)
reneA := identity.NewIdentity("René Descartes", "rene@descartes.fr")
@@ -254,8 +254,8 @@ func BenchmarkRebaseConflict(b *testing.B) {
}
func _RebaseConflict(t testing.TB) {
- repoA, repoB, remote := repository.SetupReposAndRemote(t)
- defer repository.CleanupTestRepos(t, repoA, repoB, remote)
+ repoA, repoB, remote := repository.SetupReposAndRemote()
+ defer repository.CleanupTestRepos(repoA, repoB, remote)
reneA := identity.NewIdentity("René Descartes", "rene@descartes.fr")
diff --git a/bug/clocks.go b/bug/clocks.go
index 52d23544..ba93e0dc 100644
--- a/bug/clocks.go
+++ b/bug/clocks.go
@@ -4,24 +4,34 @@ import (
"github.com/MichaelMure/git-bug/repository"
)
-// Witnesser will read all the available Bug to recreate the different logical
-// clocks
-func Witnesser(repo repository.ClockedRepo) error {
- for b := range ReadAllLocalBugs(repo) {
- if b.Err != nil {
- return b.Err
- }
+// ClockLoader is the repository.ClockLoader for the Bug entity
+var ClockLoader = repository.ClockLoader{
+ Clocks: []string{creationClockName, editClockName},
+ Witnesser: func(repo repository.ClockedRepo) error {
+ for b := range ReadAllLocalBugs(repo) {
+ if b.Err != nil {
+ return b.Err
+ }
- err := repo.WitnessCreate(b.Bug.createTime)
- if err != nil {
- return err
- }
+ createClock, err := repo.GetOrCreateClock(creationClockName)
+ if err != nil {
+ return err
+ }
+ err = createClock.Witness(b.Bug.createTime)
+ if err != nil {
+ return err
+ }
- err = repo.WitnessEdit(b.Bug.editTime)
- if err != nil {
- return err
+ editClock, err := repo.GetOrCreateClock(editClockName)
+ if err != nil {
+ return err
+ }
+ err = editClock.Witness(b.Bug.editTime)
+ if err != nil {
+ return err
+ }
}
- }
- return nil
+ return nil
+ },
}
diff --git a/bug/operation_test.go b/bug/operation_test.go
index 69c66dc8..cfd15e13 100644
--- a/bug/operation_test.go
+++ b/bug/operation_test.go
@@ -81,7 +81,7 @@ func TestMetadata(t *testing.T) {
func TestID(t *testing.T) {
repo := repository.CreateTestRepo(false)
- defer repository.CleanupTestRepos(t, repo)
+ defer repository.CleanupTestRepos(repo)
repos := []repository.ClockedRepo{
repository.NewMockRepoForTest(),