Compare commits

..

No commits in common. "master" and "v0.25.17" have entirely different histories.

7 changed files with 158 additions and 157 deletions

14
argv.go
View File

@ -155,7 +155,7 @@ func DoAutoComplete(pb *prep.Auto) {
case "checkout":
pb.Autocomplete2("devel master user")
case "clean":
pb.Autocomplete2("")
fmt.Println("--force verify --repo")
case "commit":
pb.Autocomplete2("--all")
case "config":
@ -171,11 +171,19 @@ func DoAutoComplete(pb *prep.Auto) {
case "merge":
pb.Autocomplete2("devel master --all")
case "normal":
pb.Autocomplete2("on off")
fmt.Println("on off")
case "pull":
pb.Autocomplete2("--force check")
fmt.Println("--force check")
case "patch":
fmt.Println("check get list repos submit show")
case "user":
fmt.Println("--force")
case "devel":
fmt.Println("--force")
case "master":
fmt.Println("")
case "verify":
fmt.Println("user devel master")
case "tag":
fmt.Println("list --delete clean")
default:

View File

@ -45,16 +45,7 @@ func doPatchSubmit() error {
if err != nil {
return err
}
if pset.Patches == nil {
log.Info("pset.Patches == nil")
return err
}
if pset.Patches.Len() == 0 {
log.Info("did not find any patches")
return nil
}
pset.PrintTable()
_, _, err = pset.HttpPost(myServer(), "new")
_, _, err = pset.Patches.HttpPostVerbose(myServer(), "new")
return err
}
@ -73,7 +64,7 @@ func doPatch() error {
}
if argv.Patch.Get != nil {
psets := forgepb.NewSets()
psets := forgepb.NewPatchsets()
newpb, _, _ := psets.HttpPostVerbose(myServer(), "get")
newpb.PrintTable()
me.forge.Patchsets = newpb
@ -101,40 +92,38 @@ func doPatch() error {
if argv.Patch.List != nil {
var changed bool
newpatches := new(forgepb.Set)
newpatches.Patches = forgepb.NewPatches()
newpatches := forgepb.NewPatches()
for pset := range me.forge.Patchsets.IterAll() {
pset.PrintTable()
log.Info(pset.Uuid)
for patch := range pset.Patches.IterAll() {
if setNewCommitHash(patch) {
changed = true
if patch.NewHash == "" || patch.NewHash == "na" {
if newpatches.Patches.AppendByPatchId(patch) {
log.Info("patchId added here", patch.PatchId)
}
if patch.NewHash == "na" {
newpatches.Append(patch)
log.Info("apply this patch?")
}
}
/*
for patch := range pset.Patches.IterAll() {
if repo, ok := me.forge.IsPatchApplied(patch); ok {
log.Info("\tfound patch in repo", repo.Namespace, patch.Filename)
} else {
log.Info("patchId already here", patch.PatchId)
}
} else {
if err := setNewCommitHash(patch); err != nil {
log.Infof("%s bad check on patch failure %v\n", patch.Filename, err)
return err
}
log.Info("newhash set already here", patch.PatchId, patch.NewHash)
log.Info("\tdid not find patch", patch.CommitHash, patch.NewHash, patch.Filename)
}
}
*/
}
if changed {
if err := me.forge.SavePatchsets(); err != nil {
log.Warn("savePatchsets() failed", err)
}
}
log.Info("NEW PATCHES TABLE")
newpatches.PrintTable()
for patch := range newpatches.Patches.IterAll() {
if err := setNewCommitHash(patch); err == nil {
log.Info("newhash set already here", patch.PatchId, patch.NewHash)
continue
}
log.Infof("%s is new\n", patch.Filename)
me.forge.Patchsets.PrintTable()
if newpatches.Len() != 0 {
for patch := range newpatches.IterAll() {
log.Info("new patch:", patch.CommitHash, patch.NewHash, patch.Filename)
repo := me.forge.FindByGoPath(patch.Namespace)
if repo == nil {
log.Info("\tCould not find namespace:", patch.Namespace)
@ -145,17 +134,6 @@ func doPatch() error {
log.Info("apply results:", newhash, err)
}
}
return nil
/*
if newpatches.Len() != 0 {
for patch := range newpatches.IterAll() {
log.Info("new patch:", patch.CommitHash, patch.NewHash, patch.Filename)
repo := me.forge.FindByGoPath(patch.Namespace)
if repo == nil {
log.Info("\tCould not find namespace:", patch.Namespace)
continue
}
}
return log.Errorf("patches need to be applied")
}
@ -174,7 +152,6 @@ func doPatch() error {
}
newpb.PrintTable()
return nil
*/
}
// if nothing, show patches & dirty repos
@ -207,7 +184,7 @@ func dumpWorkRepos() bool {
// returns bad if patches can not be applied
// logic is not great here but it was a first pass
func dumpPatchset(pset *forgepb.Set) bool {
func dumpPatchset(pset *forgepb.Patchset) bool {
// don't even bother to continue if we already know it's broken
if pset.State == "BROKEN" {
log.Printf("Patchset Name: %-24s Author: %s <%s> IS BAD\n", pset.Name, pset.GetGitAuthorName(), pset.GetGitAuthorEmail())

View File

@ -39,7 +39,7 @@ func doTag() error {
if argv.Tag.List != nil {
repo := findCurrentPwdRepoOrDie()
tagTablePB := makeTagTablePB(repo, repo.Tags)
tagTablePB := makeTagTablePB(repo.Tags)
// tbox := win.Bottom.Box().SetProgName("TBOX")
// t.SetParent(tbox)
tagTablePB.MakeTable()
@ -80,46 +80,40 @@ func doTag() error {
return nil
}
func makeTagTablePB(repo *gitpb.Repo, pb *gitpb.GitTags) *gitpb.GitTagsTable {
func makeTagTablePB(pb *gitpb.GitTags) *gitpb.GitTagsTable {
t := pb.NewTable("tagList")
t.NewUuid()
col := t.AddHash()
col.Width = 12
col = t.AddStringFunc("bashash", func(tag *gitpb.GitTag) string {
_, base := filepath.Split(tag.Refname)
cmd, err := repo.RunStrict([]string{"git", "log", "-1", base, "--format=%H"})
if err != nil {
return "err"
}
if len(cmd.Stdout) == 0 {
return ""
}
return cmd.Stdout[0]
})
col.Width = 12
col = t.AddTimeFunc("ctime", func(tag *gitpb.GitTag) time.Time {
// todo
return tag.Creatordate.AsTime()
})
col.Width = 4
col = t.AddTimeFunc("age", func(repo *gitpb.GitTag) time.Time {
// todo
return time.Now()
})
col.Width = 4
col = t.AddStringFunc("Ref Name", func(r *gitpb.GitTag) string {
_, ref := filepath.Split(r.GetRefname())
return ref
})
col.Width = 16
// col.Width = -1
col = t.AddTimeFunc("age", func(repo *gitpb.GitTag) time.Time {
// todo
return time.Now()
})
col.Width = 6
col = t.AddTimeFunc("ctime", func(tag *gitpb.GitTag) time.Time {
// todo
return tag.Creatordate.AsTime()
})
col.Width = 16
col = t.AddIntFunc("int", func(tag *gitpb.GitTag) int {
// todo
return 3
})
col.Width = 4
col = t.AddSubject()
col.Width = -1
col.Width = 16
return t
}

3
doc.go
View File

@ -1,10 +1,10 @@
/*
forge -- a tool to manage lots of git repos. forge includes a GUI and TUI.
forge only executes the 'git' command. Everything it does, you can run by hand with 'git'.
Options:
--debugger open the debugger window
--logger open the log.* control window
--gui GUI select the plugin (andlabs,gocui,etc)
@ -22,7 +22,6 @@ Options:
--version display version and exit
Commands:
help New to forge? This is for you.'
checkout switch branches using 'git checkout'
clean start over at the beginning

View File

@ -38,7 +38,7 @@ type stdPatchsetTableWin struct {
sync.Mutex
win *gadgets.GenericWindow // the machines gui window
box *gui.Node // the machines gui parent box widget
TB *forgepb.SetsTable // the gui table buffer
TB *forgepb.PatchsetsTable // the gui table buffer
update bool // if the window should be updated
}
@ -54,7 +54,7 @@ func (w *stdPatchsetTableWin) Toggle() {
*/
/*
etimef := func(e *forgepb.Set) string {
etimef := func(e *forgepb.Patchset) string {
etime := e.Etime.AsTime()
s := etime.Format("2006/01/02 15:04")
if strings.HasPrefix(s, "1970/") {
@ -67,14 +67,14 @@ func (w *stdPatchsetTableWin) Toggle() {
*/
/*
ctimef := func(p *forgepb.Set) string {
ctimef := func(p *forgepb.Patchset) string {
ctime := p.Ctime.AsTime()
return ctime.Format("2006/01/02 15:04")
}
}
*/
func setPatchsetState(p *forgepb.Set) {
func setPatchsetState(p *forgepb.Patchset) {
var bad bool
var good bool
var done bool = true
@ -173,33 +173,53 @@ func findCommitBySubject(subject string) (string, error) {
}
// returns true if PB changed
func setNewCommitHash(patch *forgepb.Patch) error {
func setNewCommitHash(patch *forgepb.Patch) bool {
// parts := strings.Fields(patch.Comment)
repo := me.forge.FindByGoPath(patch.Namespace)
if repo == nil {
return log.Errorf("could not find repo %s", patch.Namespace)
log.Info("could not find repo", patch.Namespace)
return false
}
comment := cleanSubject(patch.Comment)
if patch.NewHash == "" {
log.Info("init() new patch to 'na' ", patch.NewHash, "commithash:", patch.CommitHash, patch.Namespace, comment)
patch.NewHash = "na"
return true
}
os.Chdir(repo.GetFullPath())
newhash, err := findCommitBySubject(comment)
if err != nil {
return log.Errorf("patch: not found hash: %s %s %s %s %v", patch.CommitHash, patch.Namespace, comment, newhash, err)
log.Info("patch: not found hash:", patch.CommitHash, patch.Namespace, comment, newhash, err)
return false
}
patchId, err := repo.FindPatchId(newhash)
if err != nil {
return err
if patch.NewHash == newhash {
// patch was already set
return false
}
if patch.NewHash != "na" {
log.Infof("patch: hash MISMATCH %s old=%s new=%s name=%s\n", patch.Namespace, patch.NewHash, newhash, comment)
return false
}
patch.PatchId = patchId
patch.NewHash = newhash
log.Info("patch: found hash:", patch.CommitHash, newhash, patch.Namespace, comment)
return nil
return true
}
func AddAllPatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) {
/*
func setNewCommitHashLoop(p *forgepb.Patchset) bool {
var done bool = true
for patch := range p.Patches.IterAll() {
setNewCommitHashLoop(patch)
}
return done
}
*/
func AddAllPatches(notdone *forgepb.Patches, pset *forgepb.Patchset, full bool) {
for patch := range pset.Patches.IterAll() {
comment := cleanSubject(patch.Comment)
@ -213,7 +233,7 @@ func AddAllPatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) {
}
}
func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) {
func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Patchset, full bool) {
for patch := range pset.Patches.IterAll() {
comment := cleanSubject(patch.Comment)
@ -231,7 +251,7 @@ func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) {
continue
}
if patch.NewHash != "" {
if patch.NewHash != "na" {
log.Info("already applied patch", patch.Namespace, ": newhash:", patch.NewHash, "commithash:", patch.CommitHash, comment)
continue
}
@ -281,7 +301,7 @@ func findExpired() *forgepb.Patches {
continue
}
if patch.NewHash != "" {
if patch.NewHash != "na" {
log.Info("already applied patch", patch.Namespace, ": newhash:", patch.NewHash, "commithash:", patch.CommitHash, comment)
found.AppendByCommitHash(patch) // double check to ensure the commit hash isn't added twice
continue

View File

@ -117,9 +117,12 @@ func applyPatchLabel(p *forgepb.Patch) string {
// log.Info("Could not figure out repo path", rn)
return ""
}
if p.NewHash == "" {
if p.NewHash == "na" {
return "git am"
}
if p.NewHash == "" {
return "new"
}
return "done"
}

View File

@ -22,7 +22,7 @@ type repoPatchWindow struct {
grid *gui.Node // the list of available patches
// summary *patchSummary // summary of current patches
setgrid *gui.Node // the list of each patchset
pset *forgepb.Set // the patchset in question
pset *forgepb.Patchset // the patchset in question
}
// todo: autogenerate these or make them standared 'gui' package functions
@ -109,7 +109,7 @@ func makeRepoPatchWindow(repo *gitpb.Repo, fset []*forgepb.Patch) *repoPatchWind
return pw
}
func (r *repoPatchWindow) addPatchset(grid *gui.Node, pset *forgepb.Set) {
func (r *repoPatchWindow) addPatchset(grid *gui.Node, pset *forgepb.Patchset) {
repomap := make(map[*gitpb.Repo][]*forgepb.Patch)
repohash := make(map[*gitpb.Repo]string)