Skip to content

Commit 9382714

Browse files
committed
implement git har pull
1 parent c06642c commit 9382714

2 files changed

Lines changed: 20 additions & 134 deletions

File tree

backend/internal/adj/git.go

Lines changed: 10 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -9,86 +9,29 @@ import (
99

1010
// WARNING: Doing tricks on it
1111
func updateRepo(AdjBranch string) error {
12-
var repo *git.Repository
1312
var err error
1413

1514
if AdjBranch == "" {
16-
// Makes use of submodule
15+
// Makes use of user's custom ADJ
1716
return nil
1817
} else {
18+
cloneOptions := &git.CloneOptions{
19+
URL: RepoUrl,
20+
ReferenceName: plumbing.NewBranchReferenceName(AdjBranch),
21+
SingleBranch: true,
22+
Depth: 1,
23+
}
1924
if _, err = os.Stat(RepoPath); os.IsNotExist(err) {
20-
repo, err = git.PlainClone(RepoPath, false, &git.CloneOptions{
21-
URL: RepoUrl,
22-
ReferenceName: plumbing.NewBranchReferenceName(AdjBranch),
23-
SingleBranch: true,
24-
Depth: 1,
25-
})
25+
_, err = git.PlainClone(RepoPath, false, cloneOptions)
2626
if err != nil {
2727
return err
2828
}
2929
} else {
30-
repo, err = git.PlainOpen(RepoPath)
31-
if err != nil {
30+
if err = os.RemoveAll(RepoPath); err != nil {
3231
return err
3332
}
34-
}
35-
36-
err = repo.Fetch(&git.FetchOptions{
37-
RemoteName: "origin",
38-
Force: true,
39-
})
40-
if err != nil && err != git.NoErrAlreadyUpToDate {
41-
return err
42-
}
43-
44-
head, err := repo.Head()
45-
if err != nil {
46-
return err
47-
}
48-
49-
branch := head.Name().Short()
50-
51-
worktree, err := repo.Worktree()
52-
if err != nil {
53-
return err
54-
}
55-
56-
if branch != AdjBranch {
57-
localBranchRef := plumbing.NewBranchReferenceName(AdjBranch)
58-
_, err = repo.Reference(localBranchRef, false)
33+
_, err = git.PlainClone(RepoPath, false, cloneOptions)
5934
if err != nil {
60-
remoteBranchRef := plumbing.NewRemoteReferenceName("origin", AdjBranch)
61-
remoteRef, err2 := repo.Reference(remoteBranchRef, true)
62-
if err2 != nil {
63-
return err2
64-
}
65-
66-
err = worktree.Checkout(&git.CheckoutOptions{
67-
Branch: localBranchRef,
68-
Create: true,
69-
Force: true,
70-
Hash: remoteRef.Hash(),
71-
})
72-
if err != nil {
73-
println(err.Error())
74-
return err
75-
}
76-
} else {
77-
err = worktree.Checkout(&git.CheckoutOptions{
78-
Branch: localBranchRef,
79-
Force: true,
80-
})
81-
}
82-
}
83-
84-
err = worktree.Pull(&git.PullOptions{
85-
RemoteName: "origin",
86-
SingleBranch: true,
87-
})
88-
if err != nil {
89-
if err == git.NoErrAlreadyUpToDate {
90-
return nil
91-
} else {
9235
return err
9336
}
9437
}

backend/pkg/adj/git.go

Lines changed: 10 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -9,86 +9,29 @@ import (
99

1010
// WARNING: Doing tricks on it
1111
func updateRepo(AdjBranch string) error {
12-
var repo *git.Repository
1312
var err error
1413

1514
if AdjBranch == "" {
16-
// Makes use of submodule
15+
// Makes use of user's custom ADJ
1716
return nil
1817
} else {
18+
cloneOptions := &git.CloneOptions{
19+
URL: RepoUrl,
20+
ReferenceName: plumbing.NewBranchReferenceName(AdjBranch),
21+
SingleBranch: true,
22+
Depth: 1,
23+
}
1924
if _, err = os.Stat(RepoPath); os.IsNotExist(err) {
20-
repo, err = git.PlainClone(RepoPath, false, &git.CloneOptions{
21-
URL: RepoUrl,
22-
ReferenceName: plumbing.NewBranchReferenceName(AdjBranch),
23-
SingleBranch: true,
24-
Depth: 1,
25-
})
25+
_, err = git.PlainClone(RepoPath, false, cloneOptions)
2626
if err != nil {
2727
return err
2828
}
2929
} else {
30-
repo, err = git.PlainOpen(RepoPath)
31-
if err != nil {
30+
if err = os.RemoveAll(RepoPath); err != nil {
3231
return err
3332
}
34-
}
35-
36-
err = repo.Fetch(&git.FetchOptions{
37-
RemoteName: "origin",
38-
Force: true,
39-
})
40-
if err != nil && err != git.NoErrAlreadyUpToDate {
41-
return err
42-
}
43-
44-
head, err := repo.Head()
45-
if err != nil {
46-
return err
47-
}
48-
49-
branch := head.Name().Short()
50-
51-
worktree, err := repo.Worktree()
52-
if err != nil {
53-
return err
54-
}
55-
56-
if branch != AdjBranch {
57-
localBranchRef := plumbing.NewBranchReferenceName(AdjBranch)
58-
_, err = repo.Reference(localBranchRef, false)
33+
_, err = git.PlainClone(RepoPath, false, cloneOptions)
5934
if err != nil {
60-
remoteBranchRef := plumbing.NewRemoteReferenceName("origin", AdjBranch)
61-
remoteRef, err2 := repo.Reference(remoteBranchRef, true)
62-
if err2 != nil {
63-
return err2
64-
}
65-
66-
err = worktree.Checkout(&git.CheckoutOptions{
67-
Branch: localBranchRef,
68-
Create: true,
69-
Force: true,
70-
Hash: remoteRef.Hash(),
71-
})
72-
if err != nil {
73-
println(err.Error())
74-
return err
75-
}
76-
} else {
77-
err = worktree.Checkout(&git.CheckoutOptions{
78-
Branch: localBranchRef,
79-
Force: true,
80-
})
81-
}
82-
}
83-
84-
err = worktree.Pull(&git.PullOptions{
85-
RemoteName: "origin",
86-
SingleBranch: true,
87-
})
88-
if err != nil {
89-
if err == git.NoErrAlreadyUpToDate {
90-
return nil
91-
} else {
9235
return err
9336
}
9437
}

0 commit comments

Comments
 (0)