summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-11 05:18:19 -0500
committerJeff Carr <[email protected]>2025-09-11 05:18:19 -0500
commit33c585f4cfc92ba3d018f6e0758704bc533481cd (patch)
treed1c6e6b431d976a1400381860466bd49cb5aa1fd
parent7d60a495cab6c26c3ecf7ee7aa968c1a39e88176 (diff)
look for out of date remote branches
-rw-r--r--reload.go18
-rw-r--r--repo.merge.go10
2 files changed, 27 insertions, 1 deletions
diff --git a/reload.go b/reload.go
index 7c96847..12786f4 100644
--- a/reload.go
+++ b/reload.go
@@ -54,12 +54,30 @@ func (repo *Repo) Reload() error {
}
}
+ repo.VerifyRemoteAndLocalBranches(repo.GetDevelBranchName())
+ repo.VerifyRemoteAndLocalBranches(repo.GetMasterBranchName())
+
// LastUpdate should always be the newest time
repo.Times.LastUpdate = timestamppb.New(time.Now())
repo.ValidateUTF8()
return nil
}
+func (repo *Repo) VerifyRemoteAndLocalBranches(bname string) bool {
+ if !repo.IsBranchRemote(bname) {
+ return true
+ }
+ lh := repo.GetLocalHash(bname)
+ rh := repo.GetRemoteHash(bname)
+ if lh == rh {
+ // log.Info(r.FullPath, "local devel == remote devel", lh, rh)
+ return true
+ } else {
+ log.Info(repo.FullPath, bname, "local != remote", lh, rh)
+ }
+ return false
+}
+
func (repo *Repo) SetDevelBranchName(bname string) {
repo.DevelBranchName = bname
}
diff --git a/repo.merge.go b/repo.merge.go
index fe1e0ed..5dd65a2 100644
--- a/repo.merge.go
+++ b/repo.merge.go
@@ -58,7 +58,15 @@ func (r *Repo) MergeToMaster() (*cmd.Status, error) {
if r.GetReadOnly() {
r.Reload() // rescan the repo
// master branch is read only. you can not git push
- return nil, fmt.Errorf("can't merge to master on read only() repos")
+ lh := r.GetLocalHash("devel")
+ rh := r.GetRemoteHash("devel")
+ if lh == rh {
+ // log.Info(r.FullPath, "local devel == remote devel", lh, rh)
+ } else {
+ log.Info(r.FullPath, "local devel != remote devel", lh, rh)
+ }
+ log.Info("can't merge to master on read only() repos. trying anyway")
+ // return nil, fmt.Errorf("can't merge to master on read only() repos")
}
if r.CheckDirty() {
return nil, fmt.Errorf("repo is dirty")