Replace flag rebase-current with rebase-tracked
Deprecated -rebase-current flag in favour of -rebase-tracked as that is
symmetric with other flag
Change-Id: Id14207291cd264c842bf7711ca243b2e732eac51
diff --git a/cmd/jiri/update.go b/cmd/jiri/update.go
index 0c3b688..cbbf598 100644
--- a/cmd/jiri/update.go
+++ b/cmd/jiri/update.go
@@ -24,6 +24,7 @@
hookTimeoutFlag uint
rebaseAllFlag bool
rebaseCurrentFlag bool
+ rebaseTrackedFlag bool
)
func init() {
@@ -37,7 +38,8 @@
cmdUpdate.Flags.BoolVar(&rebaseUntrackedFlag, "rebase-untracked", false, "Rebase untracked branches onto HEAD.")
cmdUpdate.Flags.UintVar(&hookTimeoutFlag, "hook-timeout", project.DefaultHookTimeout, "Timeout in minutes for running the hooks operation.")
cmdUpdate.Flags.BoolVar(&rebaseAllFlag, "rebase-all", false, "Rebase all tracked branches. Also rebase all untracked bracnhes if -rebase-untracked is passed")
- cmdUpdate.Flags.BoolVar(&rebaseCurrentFlag, "rebase-current", false, "Rebase current tracked branches instead of fast-forwarding them.")
+ cmdUpdate.Flags.BoolVar(&rebaseCurrentFlag, "rebase-current", false, "Deprecated. Implies -rebase-tracked. Would be removed in future.")
+ cmdUpdate.Flags.BoolVar(&rebaseTrackedFlag, "rebase-tracked", false, "Rebase current tracked branches instead of fast-forwarding them.")
}
// cmdUpdate represents the "jiri update" command.
@@ -68,6 +70,10 @@
fmt.Printf("warning: automatic update failed: %v\n", err)
}
}
+ if rebaseCurrentFlag {
+ jirix.Logger.Warningf("Flag -rebase-current has been deprecated, please use -rebase-tracked.\n\n")
+ rebaseTrackedFlag = true
+ }
// Update all projects to their latest version.
// Attempt <attemptsFlag> times before failing.
@@ -75,7 +81,7 @@
if len(args) > 0 {
return project.CheckoutSnapshot(jirix, args[0], gcFlag, hookTimeoutFlag)
} else {
- return project.UpdateUniverse(jirix, gcFlag, localManifestFlag, rebaseCurrentFlag, rebaseUntrackedFlag, rebaseAllFlag, hookTimeoutFlag)
+ return project.UpdateUniverse(jirix, gcFlag, localManifestFlag, rebaseTrackedFlag, rebaseUntrackedFlag, rebaseAllFlag, hookTimeoutFlag)
}
}, retry.AttemptsOpt(attemptsFlag))
diff --git a/project/project.go b/project/project.go
index e9c5cfb..e668c12 100644
--- a/project/project.go
+++ b/project/project.go
@@ -786,7 +786,7 @@
if err != nil {
return err
}
- if err := updateProjects(jirix, localProjects, remoteProjects, hooks, gc, runHookTimeout, false /*rebaseCurrent*/, false /*rebaseUntracked*/, false /*rebaseAll*/, true /*snapshot*/); err != nil {
+ if err := updateProjects(jirix, localProjects, remoteProjects, hooks, gc, runHookTimeout, false /*rebaseTracked*/, false /*rebaseUntracked*/, false /*rebaseAll*/, true /*snapshot*/); err != nil {
return err
}
return WriteUpdateHistorySnapshot(jirix, snapshot, false)
@@ -1016,7 +1016,7 @@
// counterparts identified in the manifest. Optionally, the 'gc' flag can be
// used to indicate that local projects that no longer exist remotely should be
// removed.
-func UpdateUniverse(jirix *jiri.X, gc bool, localManifest bool, rebaseCurrent bool, rebaseUntracked bool, rebaseAll bool, runHookTimeout uint) (e error) {
+func UpdateUniverse(jirix *jiri.X, gc bool, localManifest bool, rebaseTracked bool, rebaseUntracked bool, rebaseAll bool, runHookTimeout uint) (e error) {
jirix.Logger.Infof("Updating all projects")
updateFn := func(scanMode ScanMode) error {
@@ -1043,7 +1043,7 @@
}
// Actually update the projects.
- return updateProjects(jirix, localProjects, remoteProjects, hooks, gc, runHookTimeout, rebaseCurrent, rebaseUntracked, rebaseAll, false /*snapshot*/)
+ return updateProjects(jirix, localProjects, remoteProjects, hooks, gc, runHookTimeout, rebaseTracked, rebaseUntracked, rebaseAll, false /*snapshot*/)
}
// Specifying gc should always force a full filesystem scan.
@@ -1346,7 +1346,7 @@
// syncProjectMaster checks out latest detached head if project is on one
// else it rebases current branch onto its tracking branch
-func syncProjectMaster(jirix *jiri.X, project Project, state ProjectState, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot bool) error {
+func syncProjectMaster(jirix *jiri.X, project Project, state ProjectState, rebaseTracked, rebaseUntracked, rebaseAll, snapshot bool) error {
cwd, err := os.Getwd()
if err != nil {
return fmtError(err)
@@ -1407,7 +1407,7 @@
}
// if rebase flag is false, merge fast forward current branch
- if !rebaseCurrent && !rebaseAll && state.CurrentBranch.Tracking != nil {
+ if !rebaseTracked && !rebaseAll && state.CurrentBranch.Tracking != nil {
tracking := state.CurrentBranch.Tracking
if tracking.Revision == state.CurrentBranch.Revision {
return nil
@@ -2122,7 +2122,7 @@
return nil
}
-func updateProjects(jirix *jiri.X, localProjects, remoteProjects Projects, hooks Hooks, gc bool, runHookTimeout uint, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot bool) error {
+func updateProjects(jirix *jiri.X, localProjects, remoteProjects Projects, hooks Hooks, gc bool, runHookTimeout uint, rebaseTracked, rebaseUntracked, rebaseAll, snapshot bool) error {
jirix.TimerPush("update projects")
defer jirix.TimerPop()
@@ -2169,7 +2169,7 @@
if len(multiErr) != 0 {
return multiErr
}
- ops := computeOperations(localProjects, ps, states, gc, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot)
+ ops := computeOperations(localProjects, ps, states, gc, rebaseTracked, rebaseUntracked, rebaseAll, snapshot)
moveOperations := []moveOperation{}
deleteOperations := []deleteOperation{}
updateOperations := operations{}
@@ -2679,7 +2679,7 @@
// moveOperation represents the relocation of a project.
type moveOperation struct {
commonOperation
- rebaseCurrent bool
+ rebaseTracked bool
rebaseUntracked bool
rebaseAll bool
snapshot bool
@@ -2704,7 +2704,7 @@
return fmtError(err)
}
}
- if err := syncProjectMaster(jirix, op.project, op.state, op.rebaseCurrent, op.rebaseUntracked, op.rebaseAll, op.snapshot); err != nil {
+ if err := syncProjectMaster(jirix, op.project, op.state, op.rebaseTracked, op.rebaseUntracked, op.rebaseAll, op.snapshot); err != nil {
return err
}
return writeMetadata(jirix, op.project, op.project.Path)
@@ -2735,7 +2735,7 @@
// updateOperation represents the update of a project.
type updateOperation struct {
commonOperation
- rebaseCurrent bool
+ rebaseTracked bool
rebaseUntracked bool
rebaseAll bool
snapshot bool
@@ -2746,7 +2746,7 @@
}
func (op updateOperation) Run(jirix *jiri.X) error {
- if err := syncProjectMaster(jirix, op.project, op.state, op.rebaseCurrent, op.rebaseUntracked, op.rebaseAll, op.snapshot); err != nil {
+ if err := syncProjectMaster(jirix, op.project, op.state, op.rebaseTracked, op.rebaseUntracked, op.rebaseAll, op.snapshot); err != nil {
return err
}
return writeMetadata(jirix, op.project, op.project.Path)
@@ -2836,7 +2836,7 @@
// system and manifest file respectively) and outputs a collection of
// operations that describe the actions needed to update the target
// projects.
-func computeOperations(localProjects, remoteProjects Projects, states map[ProjectKey]*ProjectState, gc, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot bool) operations {
+func computeOperations(localProjects, remoteProjects Projects, states map[ProjectKey]*ProjectState, gc, rebaseTracked, rebaseUntracked, rebaseAll, snapshot bool) operations {
result := operations{}
allProjects := map[ProjectKey]bool{}
for _, p := range localProjects {
@@ -2857,13 +2857,13 @@
if s, ok := states[key]; ok {
state = s
}
- result = append(result, computeOp(local, remote, state, gc, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot))
+ result = append(result, computeOp(local, remote, state, gc, rebaseTracked, rebaseUntracked, rebaseAll, snapshot))
}
sort.Sort(result)
return result
}
-func computeOp(local, remote *Project, state *ProjectState, gc, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot bool) operation {
+func computeOp(local, remote *Project, state *ProjectState, gc, rebaseTracked, rebaseUntracked, rebaseAll, snapshot bool) operation {
switch {
case local == nil && remote != nil:
return createOperation{commonOperation{
@@ -2908,28 +2908,28 @@
project: *remote,
source: local.Path,
state: *state,
- }, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot}
+ }, rebaseTracked, rebaseUntracked, rebaseAll, snapshot}
case snapshot && local.Revision != remote.Revision:
return updateOperation{commonOperation{
destination: remote.Path,
project: *remote,
source: local.Path,
state: *state,
- }, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot}
+ }, rebaseTracked, rebaseUntracked, rebaseAll, snapshot}
case localBranchesNeedUpdating || (state.CurrentBranch.Name == "" && local.Revision != remote.Revision):
return updateOperation{commonOperation{
destination: remote.Path,
project: *remote,
source: local.Path,
state: *state,
- }, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot}
+ }, rebaseTracked, rebaseUntracked, rebaseAll, snapshot}
case state.CurrentBranch.Tracking == nil && local.Revision != remote.Revision:
return updateOperation{commonOperation{
destination: remote.Path,
project: *remote,
source: local.Path,
state: *state,
- }, rebaseCurrent, rebaseUntracked, rebaseAll, snapshot}
+ }, rebaseTracked, rebaseUntracked, rebaseAll, snapshot}
default:
return nullOperation{commonOperation{
destination: remote.Path,
diff --git a/project/project_test.go b/project/project_test.go
index 8f547b2..e51fee0 100644
--- a/project/project_test.go
+++ b/project/project_test.go
@@ -1130,7 +1130,7 @@
t.Fatal(err)
}
- if err := project.UpdateUniverse(fake.X, false, false, true /*rebaseCurrent*/, false, false, project.DefaultHookTimeout); err != nil {
+ if err := project.UpdateUniverse(fake.X, false, false, true /*rebaseTracked*/, false, false, project.DefaultHookTimeout); err != nil {
t.Fatal(err)
}