6
6
7
7
"github.com/multiverse-vcs/go-multiverse/pkg/command/context"
8
8
"github.com/multiverse-vcs/go-multiverse/pkg/dag"
9
- "github.com/multiverse-vcs/go-multiverse/pkg/fs"
10
9
"github.com/multiverse-vcs/go-multiverse/pkg/object"
11
10
"github.com/urfave/cli/v2"
12
11
)
@@ -29,47 +28,43 @@ func NewCommitCommand() *cli.Command {
29
28
return err
30
29
}
31
30
32
- ctx , err := context .New (cwd )
31
+ cc , err := context .New (cwd )
33
32
if err != nil {
34
33
return err
35
34
}
36
35
37
- head , ok := ctx .Config .Repository .Branches [ctx .Config .Branch ]
38
- if ok && head != ctx .Config .Index {
39
- return errors .New ("index is behind head" )
40
- }
36
+ branch := cc .Config .Branches [cc .Config .Branch ]
41
37
42
- ignore , err := ctx . Ignore ( )
38
+ tree , err := cc . Tree ( c . Context )
43
39
if err != nil {
44
40
return err
45
41
}
46
42
47
- tree , err := fs . Add (c .Context , ctx .DAG , ctx . Root , ignore )
43
+ diffs , err := dag . Status (c .Context , cc .DAG , tree , branch . Head )
48
44
if err != nil {
49
45
return err
50
46
}
51
47
52
- equal , err := dag .Equal (c .Context , ctx .DAG , ctx .Config .Index , tree )
53
- if err != nil {
54
- return err
55
- }
56
-
57
- if equal {
48
+ if len (diffs ) == 0 {
58
49
return errors .New ("no changes to commit" )
59
50
}
60
51
61
52
commit := object .NewCommit ()
62
53
commit .Tree = tree .Cid ()
63
54
commit .Message = c .String ("message" )
64
55
65
- commitID , err := object .AddCommit (c .Context , ctx .DAG , commit )
56
+ if branch .Head .Defined () {
57
+ commit .Parents = append (commit .Parents , branch .Head )
58
+ }
59
+
60
+ commitID , err := object .AddCommit (c .Context , cc .DAG , commit )
66
61
if err != nil {
67
62
return err
68
63
}
69
64
70
- ctx . Config . Index = commitID
71
- ctx . Config . Repository . Branches [ ctx . Config . Branch ] = commitID
72
- return ctx .Config .Write ()
65
+ branch . Head = commitID
66
+ branch . Stash = tree . Cid ()
67
+ return cc .Config .Write ()
73
68
},
74
69
}
75
70
}
0 commit comments