blob: af10b895b7b4e7a7c80f596a57a72c6bc87526fb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package bug
import (
"github.com/MichaelMure/git-bug/repository"
)
type Interface interface {
// Id return the Bug identifier
Id() string
// HumanId return the Bug identifier truncated for human consumption
HumanId() string
// IsValid check if the Bug data is valid
IsValid() bool
// 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
// Commit write the staging area in Git and move the operations to the packs
Commit(repo repository.Repo) error
// Merge a different version of the same bug by rebasing operations of this bug
// that are not present in the other on top of the chain of operations of the
// other version.
Merge(repo repository.Repo, other Interface) (bool, error)
// Lookup for the very first operation of the bug.
// For a valid Bug, this operation should be a CreateOp
FirstOp() Operation
// Lookup for the very last operation of the bug.
// For a valid Bug, should never be nil
LastOp() Operation
// Compile a bug in a easily usable snapshot
Compile() Snapshot
}
func bugFromInterface(bug Interface) *Bug {
switch bug.(type) {
case *Bug:
return bug.(*Bug)
case *WithSnapshot:
return bug.(*WithSnapshot).Bug
default:
panic("missing type case")
}
}
|