aboutsummaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
Diffstat (limited to 'bridge')
-rw-r--r--bridge/github/export.go59
-rw-r--r--bridge/github/export_test.go10
-rw-r--r--bridge/github/import.go35
-rw-r--r--bridge/gitlab/import.go23
4 files changed, 40 insertions, 87 deletions
diff --git a/bridge/github/export.go b/bridge/github/export.go
index b4351bdb..21f75cb4 100644
--- a/bridge/github/export.go
+++ b/bridge/github/export.go
@@ -17,7 +17,6 @@ import (
"github.com/MichaelMure/git-bug/bridge/core"
"github.com/MichaelMure/git-bug/bug"
"github.com/MichaelMure/git-bug/cache"
- "github.com/MichaelMure/git-bug/util/git"
)
var (
@@ -144,7 +143,6 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
var bugGithubID string
var bugGithubURL string
- var bugCreationHash string
// Special case:
// if a user try to export a bug that is not already exported to Github (or imported
@@ -209,15 +207,8 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
out <- core.NewExportBug(b.Id())
- hash, err := createOp.Hash()
- if err != nil {
- err := errors.Wrap(err, "comment hash")
- out <- core.NewExportError(err, b.Id())
- return
- }
-
// mark bug creation operation as exported
- if err := markOperationAsExported(b, hash, id, url); err != nil {
+ if err := markOperationAsExported(b, createOp.ID(), id, url); err != nil {
err := errors.Wrap(err, "marking operation as exported")
out <- core.NewExportError(err, b.Id())
return
@@ -235,17 +226,8 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
bugGithubURL = url
}
- // get createOp hash
- hash, err := createOp.Hash()
- if err != nil {
- out <- core.NewExportError(err, b.Id())
- return
- }
-
- bugCreationHash = hash.String()
-
// cache operation github id
- ge.cachedOperationIDs[bugCreationHash] = bugGithubID
+ ge.cachedOperationIDs[createOp.ID()] = bugGithubID
for _, op := range snapshot.Operations[1:] {
// ignore SetMetadata operations
@@ -253,26 +235,18 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
continue
}
- // get operation hash
- hash, err := op.Hash()
- if err != nil {
- err := errors.Wrap(err, "operation hash")
- out <- core.NewExportError(err, b.Id())
- return
- }
-
// ignore operations already existing in github (due to import or export)
// cache the ID of already exported or imported issues and events from Github
if id, ok := op.GetMetadata(keyGithubId); ok {
- ge.cachedOperationIDs[hash.String()] = id
- out <- core.NewExportNothing(hash.String(), "already exported operation")
+ ge.cachedOperationIDs[op.ID()] = id
+ out <- core.NewExportNothing(op.ID(), "already exported operation")
continue
}
opAuthor := op.GetAuthor()
client, err := ge.getIdentityClient(opAuthor.Id())
if err != nil {
- out <- core.NewExportNothing(hash.String(), "missing operation author token")
+ out <- core.NewExportNothing(op.ID(), "missing operation author token")
continue
}
@@ -289,18 +263,17 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
return
}
- out <- core.NewExportComment(hash.String())
+ out <- core.NewExportComment(op.ID())
// cache comment id
- ge.cachedOperationIDs[hash.String()] = id
+ ge.cachedOperationIDs[op.ID()] = id
case *bug.EditCommentOperation:
opr := op.(*bug.EditCommentOperation)
- targetHash := opr.Target.String()
// Since github doesn't consider the issue body as a comment
- if targetHash == bugCreationHash {
+ if opr.Target == createOp.ID() {
// case bug creation operation: we need to edit the Github issue
if err := updateGithubIssueBody(client, bugGithubID, opr.Message); err != nil {
@@ -309,7 +282,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
return
}
- out <- core.NewExportCommentEdition(hash.String())
+ out <- core.NewExportCommentEdition(op.ID())
id = bugGithubID
url = bugGithubURL
@@ -317,7 +290,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
} else {
// case comment edition operation: we need to edit the Github comment
- commentID, ok := ge.cachedOperationIDs[targetHash]
+ commentID, ok := ge.cachedOperationIDs[opr.ID()]
if !ok {
panic("unexpected error: comment id not found")
}
@@ -329,7 +302,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
return
}
- out <- core.NewExportCommentEdition(hash.String())
+ out <- core.NewExportCommentEdition(op.ID())
// use comment id/url instead of issue id/url
id = eid
@@ -344,7 +317,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
return
}
- out <- core.NewExportStatusChange(hash.String())
+ out <- core.NewExportStatusChange(op.ID())
id = bugGithubID
url = bugGithubURL
@@ -357,7 +330,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
return
}
- out <- core.NewExportTitleEdition(hash.String())
+ out <- core.NewExportTitleEdition(op.ID())
id = bugGithubID
url = bugGithubURL
@@ -370,7 +343,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
return
}
- out <- core.NewExportLabelChange(hash.String())
+ out <- core.NewExportLabelChange(op.ID())
id = bugGithubID
url = bugGithubURL
@@ -380,7 +353,7 @@ func (ge *githubExporter) exportBug(b *cache.BugCache, since time.Time, out chan
}
// mark operation as exported
- if err := markOperationAsExported(b, hash, id, url); err != nil {
+ if err := markOperationAsExported(b, op.ID(), id, url); err != nil {
err := errors.Wrap(err, "marking operation as exported")
out <- core.NewExportError(err, b.Id())
return
@@ -438,7 +411,7 @@ func getRepositoryNodeID(owner, project, token string) (string, error) {
return aux.NodeID, nil
}
-func markOperationAsExported(b *cache.BugCache, target git.Hash, githubID, githubURL string) error {
+func markOperationAsExported(b *cache.BugCache, target string, githubID, githubURL string) error {
_, err := b.SetMetadata(
target,
map[string]string{
diff --git a/bridge/github/export_test.go b/bridge/github/export_test.go
index 80660e77..ac18fea5 100644
--- a/bridge/github/export_test.go
+++ b/bridge/github/export_test.go
@@ -58,19 +58,13 @@ func testCases(t *testing.T, repo *cache.RepoCache, identity *cache.IdentityCach
bugWithCommentEditions, createOp, err := repo.NewBug("bug with comments editions", "new bug")
require.NoError(t, err)
- createOpHash, err := createOp.Hash()
- require.NoError(t, err)
-
- _, err = bugWithCommentEditions.EditComment(createOpHash, "first comment edited")
+ _, err = bugWithCommentEditions.EditComment(createOp.ID(), "first comment edited")
require.NoError(t, err)
commentOp, err := bugWithCommentEditions.AddComment("first comment")
require.NoError(t, err)
- commentOpHash, err := commentOp.Hash()
- require.NoError(t, err)
-
- _, err = bugWithCommentEditions.EditComment(commentOpHash, "first comment edited")
+ _, err = bugWithCommentEditions.EditComment(commentOp.ID(), "first comment edited")
require.NoError(t, err)
// bug status changed
diff --git a/bridge/github/import.go b/bridge/github/import.go
index c162d70e..56b50c81 100644
--- a/bridge/github/import.go
+++ b/bridge/github/import.go
@@ -11,7 +11,6 @@ import (
"github.com/MichaelMure/git-bug/bug"
"github.com/MichaelMure/git-bug/cache"
"github.com/MichaelMure/git-bug/identity"
- "github.com/MichaelMure/git-bug/util/git"
"github.com/MichaelMure/git-bug/util/text"
)
@@ -93,7 +92,7 @@ func (gi *githubImporter) ensureIssue(repo *cache.RepoCache, issue issueTimeline
}
// get issue edits
- issueEdits := []userContentEdit{}
+ var issueEdits []userContentEdit
for gi.iterator.NextIssueEdit() {
issueEdits = append(issueEdits, gi.iterator.IssueEditValue())
}
@@ -307,15 +306,14 @@ func (gi *githubImporter) ensureTimelineComment(repo *cache.RepoCache, b *cache.
return err
}
- var target git.Hash
- target, err = b.ResolveOperationWithMetadata(keyGithubId, parseId(item.Id))
+ targetOpID, err := b.ResolveOperationWithMetadata(keyGithubId, parseId(item.Id))
if err != nil && err != cache.ErrNoMatchingOp {
// real error
return err
}
+
// if no edits are given we create the comment
if len(edits) == 0 {
-
// if comment doesn't exist
if err == cache.ErrNoMatchingOp {
cleanText, err := text.Cleanup(string(item.Body))
@@ -324,7 +322,7 @@ func (gi *githubImporter) ensureTimelineComment(repo *cache.RepoCache, b *cache.
}
// add comment operation
- op, err := b.AddCommentRaw(
+ _, err = b.AddCommentRaw(
author,
item.CreatedAt.Unix(),
cleanText,
@@ -334,19 +332,11 @@ func (gi *githubImporter) ensureTimelineComment(repo *cache.RepoCache, b *cache.
keyGithubUrl: parseId(item.Url.String()),
},
)
- if err != nil {
- return err
- }
-
- // set hash
- target, err = op.Hash()
- if err != nil {
- return err
- }
+ return err
}
} else {
for i, edit := range edits {
- if i == 0 && target != "" {
+ if i == 0 && targetOpID != "" {
// The first edit in the github result is the comment creation itself, we already have that
continue
}
@@ -358,7 +348,7 @@ func (gi *githubImporter) ensureTimelineComment(repo *cache.RepoCache, b *cache.
}
// create comment when target is empty
- if target == "" {
+ if targetOpID == "" {
cleanText, err := text.Cleanup(string(*edit.Diff))
if err != nil {
return err
@@ -378,16 +368,13 @@ func (gi *githubImporter) ensureTimelineComment(repo *cache.RepoCache, b *cache.
return err
}
- // set hash
- target, err = op.Hash()
- if err != nil {
- return err
- }
+ // set target for the nexr edit now that the comment is created
+ targetOpID = op.ID()
continue
}
- err = gi.ensureCommentEdit(repo, b, target, edit)
+ err = gi.ensureCommentEdit(repo, b, targetOpID, edit)
if err != nil {
return err
}
@@ -396,7 +383,7 @@ func (gi *githubImporter) ensureTimelineComment(repo *cache.RepoCache, b *cache.
return nil
}
-func (gi *githubImporter) ensureCommentEdit(repo *cache.RepoCache, b *cache.BugCache, target git.Hash, edit userContentEdit) error {
+func (gi *githubImporter) ensureCommentEdit(repo *cache.RepoCache, b *cache.BugCache, target string, edit userContentEdit) error {
_, err := b.ResolveOperationWithMetadata(keyGithubId, parseId(edit.Id))
if err == nil {
// already imported
diff --git a/bridge/gitlab/import.go b/bridge/gitlab/import.go
index dbedfda8..8b389357 100644
--- a/bridge/gitlab/import.go
+++ b/bridge/gitlab/import.go
@@ -11,7 +11,6 @@ import (
"github.com/MichaelMure/git-bug/bug"
"github.com/MichaelMure/git-bug/cache"
"github.com/MichaelMure/git-bug/identity"
- "github.com/MichaelMure/git-bug/util/git"
"github.com/MichaelMure/git-bug/util/text"
)
@@ -130,10 +129,10 @@ func (gi *gitlabImporter) ensureIssue(repo *cache.RepoCache, issue *gitlab.Issue
}
func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, note *gitlab.Note) error {
- id := parseID(note.ID)
+ gitlabID := parseID(note.ID)
- hash, errResolve := b.ResolveOperationWithMetadata(keyGitlabId, id)
- if errResolve != nil && errResolve != cache.ErrNoMatchingOp {
+ id, errResolve := b.ResolveOperationWithMetadata(keyGitlabId, gitlabID)
+ if errResolve != cache.ErrNoMatchingOp {
return errResolve
}
@@ -154,7 +153,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
author,
note.CreatedAt.Unix(),
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: gitlabID,
},
)
return err
@@ -168,7 +167,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
author,
note.CreatedAt.Unix(),
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: gitlabID,
},
)
return err
@@ -185,10 +184,10 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
_, err = b.EditCommentRaw(
author,
note.UpdatedAt.Unix(),
- git.Hash(firstComment.Id()),
+ firstComment.Id(),
issue.Description,
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: gitlabID,
},
)
@@ -211,7 +210,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
cleanText,
nil,
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: gitlabID,
},
)
@@ -221,7 +220,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
// if comment was already exported
// search for last comment update
- comment, err := b.Snapshot().SearchComment(hash)
+ comment, err := b.Snapshot().SearchComment(id)
if err != nil {
return err
}
@@ -232,7 +231,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
_, err = b.EditCommentRaw(
author,
note.UpdatedAt.Unix(),
- git.Hash(comment.Id()),
+ comment.Id(),
cleanText,
nil,
)
@@ -253,7 +252,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
note.CreatedAt.Unix(),
body,
map[string]string{
- keyGitlabId: id,
+ keyGitlabId: gitlabID,
},
)