Skip to content

Commit 743c81f

Browse files
committed
modify
1 parent 8e5b588 commit 743c81f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+372
-4256
lines changed

.idea/git-json-diff.iml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

Lines changed: 286 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.lock

Lines changed: 0 additions & 27 deletions
This file was deleted.

Gopkg.toml

Lines changed: 0 additions & 22 deletions
This file was deleted.

cmd/main.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package main
2+
3+
import (
4+
"flag"
5+
"fmt"
6+
"os"
7+
"log"
8+
"github.com/xrlin/git-json-diff"
9+
)
10+
11+
func main() {
12+
filePath := flag.String("file", "", "file in repo to show diff")
13+
commit1 := flag.String("commit1", "HEAD", "commit id, as current version, to fetch the file content.")
14+
commit2 := flag.String("commit2", "HEAD~", "commit id, as the old version, to fetch the file content.")
15+
format := flag.String("format", "ascii", "Diff Output Format (ascii, delta)")
16+
flag.Parse()
17+
18+
if *filePath == "" {
19+
flag.Usage()
20+
os.Exit(1)
21+
}
22+
23+
jsonText1, err := git_json_diff.RetrieveFileContentWithCommitId(*filePath, *commit1)
24+
if err != nil {
25+
log.Fatalln(err)
26+
}
27+
jsonText2, err := git_json_diff.RetrieveFileContentWithCommitId(*filePath, *commit2)
28+
if err != nil {
29+
log.Fatalln(err)
30+
}
31+
32+
diffString, err := git_json_diff.Compare(jsonText1, jsonText2, *format)
33+
if err != nil {
34+
log.Fatalln(err)
35+
}
36+
fmt.Println(diffString)
37+
38+
}

git.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package git_json_diff
33
import (
44
"os/exec"
55
"log"
6-
"io/ioutil"
76
diff "github.com/yudai/gojsondiff"
87
"fmt"
98
"encoding/json"
@@ -17,27 +16,22 @@ func isGitInstall() bool {
1716
return true
1817
}
1918

20-
func RetriveFileContentWithCommitId(filePath, commitid string) (string, error) {
21-
if isGitInstall() {
19+
func RetrieveFileContentWithCommitId(filePath, commitId string) (ret string, err error) {
20+
if !isGitInstall() {
2221
log.Fatalln("cannot find git command")
2322
}
24-
cmd := exec.Command("git", "show " + commitid + ":" + filePath)
25-
stdout, err := cmd.StdoutPipe()
26-
if err != nil {
27-
log.Fatal(err)
28-
}
23+
cmd := exec.Command("git", "show", commitId + ":" + filePath)
24+
stdout, err := cmd.CombinedOutput()
2925
defer func() {
30-
stdout.Close()
26+
if err != nil {
27+
fmt.Printf("running %s with args %s riase error: %s\n", cmd.Path, cmd.Args, stdout)
28+
}
3129
}()
3230

33-
if err := cmd.Start(); err != nil {
34-
log.Fatal(err)
35-
}
36-
if err := cmd.Wait(); err != nil {
37-
log.Fatal(err)
31+
if err != nil {
32+
return "", err
3833
}
39-
b, err := ioutil.ReadAll(stdout)
40-
return string(b), err
34+
return string(stdout), err
4135
}
4236

4337
func Compare(jsonText1, jsonText2, outFormat string) (string, error) {

git_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package git_json_diff
2+
3+
import "testing"
4+
5+
func TestRetrieveFileContentWithCommitId(t *testing.T) {
6+
_, err := RetrieveFileContentWithCommitId("test.json", "HEAD")
7+
if err != nil {
8+
t.Errorf("failed with error: %v\n", err)
9+
}
10+
}

go.mod

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module github.com/xrlin/git-json-diff
2+
3+
require (
4+
github.com/sergi/go-diff v1.0.0 // indirect
5+
github.com/yudai/gojsondiff v1.0.0
6+
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
7+
)

go.sum

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
2+
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
3+
github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA=
4+
github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg=
5+
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M=
6+
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM=

main.go

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)