Skip to content

Commit 5ccbae6

Browse files
committed
Adapt python-update-import to work well with git worktrees
1 parent bc94b45 commit 5ccbae6

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

mx.graalpython/mx_graalpython.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,15 +1785,16 @@ def update_import_cmd(args):
17851785
parser.add_argument('--no-pull', action='store_true')
17861786
parser.add_argument('--no-push', action='store_true')
17871787
parser.add_argument('--allow-dirty', action='store_true')
1788+
parser.add_argument('--no-master-check', action='store_true', help="do not check if repos are on master branch (e.g., when detached)")
17881789
args = parser.parse_args(args)
17891790

17901791
join = os.path.join
17911792
vc = SUITE.vc
17921793

1793-
current_branch = vc.active_branch(SUITE.dir)
1794+
current_branch = vc.active_branch(SUITE.dir, abortOnError=not args.no_master_check)
17941795
if vc.isDirty(SUITE.dir) and not args.allow_dirty:
1795-
mx.abort("updating imports should be done on a clean branch")
1796-
if current_branch == "master":
1796+
mx.abort(f"updating imports should be done on a clean branch, not clean: {SUITE.dir}")
1797+
if current_branch == "master" or args.no_master_check:
17971798
vc.git_command(SUITE.dir, ["checkout", "-b", f"update/GR-21590/{datetime.datetime.now().strftime('%d%m%y')}"])
17981799
current_branch = vc.active_branch(SUITE.dir)
17991800

@@ -1807,10 +1808,10 @@ def update_import_cmd(args):
18071808
for d in repos:
18081809
if vc.isDirty(d) and not args.allow_dirty:
18091810
mx.abort("repo %s is not clean" % d)
1810-
d_branch = vc.active_branch(d)
1811+
d_branch = vc.active_branch(d, abortOnError=not args.no_master_check)
18111812
if d_branch == current_branch:
18121813
pass
1813-
elif d_branch == "master":
1814+
elif args.no_master_check or d_branch == "master":
18141815
vc.set_branch(d, current_branch, with_remote=False)
18151816
vc.git_command(d, ["checkout", current_branch], abortOnError=True)
18161817
else:
@@ -1820,11 +1821,11 @@ def update_import_cmd(args):
18201821
overlaydir = join(SUITE.dir, "..", "ci-overlays")
18211822
if not os.path.exists(overlaydir):
18221823
mx.abort("Overlays repo must be next to graalpython repo")
1823-
vc = mx.VC.get_vc(overlaydir)
1824+
vc = mx.VC.get_vc(overlaydir)
18241825
if vc.isDirty(overlaydir) and not args.allow_dirty:
18251826
mx.abort("overlays repo must be clean")
1826-
overlaybranch = vc.active_branch(overlaydir)
1827-
if overlaybranch == "master":
1827+
overlaybranch = vc.active_branch(overlaydir, abortOnError=not args.no_master_check)
1828+
if args.no_master_check or overlaybranch == "master":
18281829
if not args.no_pull:
18291830
vc.pull(overlaydir)
18301831
vc.set_branch(overlaydir, current_branch, with_remote=False)

0 commit comments

Comments
 (0)