summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isTracked.go62
-rw-r--r--main.go27
2 files changed, 7 insertions, 82 deletions
diff --git a/isTracked.go b/isTracked.go
deleted file mode 100644
index 414414b..0000000
--- a/isTracked.go
+++ /dev/null
@@ -1,62 +0,0 @@
-package main
-
-import (
- "fmt"
- "os"
- "os/exec"
-
- "go.wit.com/lib/protobuf/gitpb"
-)
-
-func isTracked(file string) (bool, error) {
- cmd := exec.Command("git", "ls-files", "--error-unmatch", file)
- err := cmd.Run()
- if err == nil {
- return true, nil
- }
- if exitError, ok := err.(*exec.ExitError); ok && exitError.ExitCode() == 1 {
- return false, nil // File not tracked
- }
- return false, fmt.Errorf("error checking tracked status: %v", err)
-}
-
-func isIgnored(file string) (bool, error) {
- cmd := exec.Command("git", "check-ignore", "-q", file)
- err := cmd.Run()
- if err == nil {
- return true, nil
- }
- if exitError, ok := err.(*exec.ExitError); ok && exitError.ExitCode() == 1 {
- return false, nil // File not ignored
- }
- return false, fmt.Errorf("error checking ignored status: %v", err)
-}
-
-func repoIgnoresGoMod(repo *gitpb.Repo) (bool, error) {
- os.Chdir(repo.FullPath)
- file := "go.mod"
-
- tracked, err := isTracked(file)
- if err != nil {
- fmt.Printf("%s Error checking if tracked: %v\n", repo.GoPath, err)
- return false, err
- }
-
- if tracked {
- fmt.Printf("%s %s is tracked by Git.\n", repo.GoPath, file)
- return false, nil
- }
-
- ignored, err := isIgnored(file)
- if err != nil {
- fmt.Printf("%s Error checking if ignored: %v\n", repo.GoPath, err)
- return false, err
- }
-
- if ignored {
- fmt.Printf("%s %s is ignored by Git.\n", repo.GoPath, file)
- return true, nil
- }
- fmt.Printf("%s %s is neither tracked nor ignored by Git.\n", repo.GoPath, file)
- return false, nil
-}
diff --git a/main.go b/main.go
index 26616f5..c3e9634 100644
--- a/main.go
+++ b/main.go
@@ -145,6 +145,13 @@ func doMain(repo *gitpb.Repo) error {
repo.Run([]string{"git", "notes", "remove"})
}
+ if err := repo.RepoIgnoresGoMod(); err != nil {
+ log.Info("never modify go.mod or go.sum for this repo", repo.GoPath)
+ log.Info("We recommend you add 'go.*' to your .gitignore file and store those files as git tag metadata")
+ repo.ParseGoSum()
+ return nil
+ }
+
// erase the go.mod and go.sum files
eraseGoMod(repo)
@@ -184,26 +191,6 @@ func doMain(repo *gitpb.Repo) error {
}
}
- ok, err := repoIgnoresGoMod(repo)
- if err != nil {
- log.Info(repo.GoPath, "some wierd git error happened. investigate.", err)
- return err
- }
- // if ok, then git owns 'go.mod' and we can't really do anything
- // todo: ignore this with --force
- if ok {
- log.Info(repo.GoPath, "git says it does not own go.mod")
- // continue and attempt to create go.mod and go.sum
- } else {
- if forge.Config.IsReadOnly(repo.GoPath) {
- log.Info("you can not push to read only repositories.", repo.GoPath)
- log.Info("change your .config/forge/ to indicate you own this repository")
- return nil
- }
- perfect = false
- // continue and attempt to create go.mod and go.sum
- }
-
if repo.CheckDirty() {
perfect = false
if argv.Strict {