X-Git-Url: https://scripts.mit.edu/gitweb/wizard.git/blobdiff_plain/71e6a449afbad015a25a39eedc808aca0c92db00..10fea9a7ddab6a654922514b13b135772cc98a01:/wizard/command/prepare_pristine.py diff --git a/wizard/command/prepare_pristine.py b/wizard/command/prepare_pristine.py index 6890676..d4c9233 100644 --- a/wizard/command/prepare_pristine.py +++ b/wizard/command/prepare_pristine.py @@ -1,6 +1,7 @@ import urllib import shutil import os +import os.path from wizard import app, command, shell @@ -32,7 +33,11 @@ def main(argv, baton): if "/.git" in dirpath: continue if not filenames and not dirnames: open(os.path.join(dirpath, ".preserve-dir"), "w").write("") + # stage all changes shell.call("git", "add", ".") + for f in shell.call("git", "ls-files", "-d", "-z")[0].split("\0"): + if f != "": + shell.call("git", "rm", "--", f) def parse_args(argv, baton): usage = """usage: %prog prepare-pristine APP-VERSION @@ -56,6 +61,8 @@ local diffs: you can override this safety mechanism with --force. return options, args def check_directory(options): + if not os.path.exists(".git"): + raise Exception("Not in root directory of Git repository") files = shell.eval("git", "ls-files", "-o") if files: raise Exception("Unversioned files exist, refusing to remove (override with --force)") @@ -65,11 +72,8 @@ def check_directory(options): if not options.force: if ref != "refs/heads/pristine" and os.path.exists(os.path.join(".git", ref)): raise Exception("Not on pristine branch (override with --force)") - try: - shell.call("git", "status") + if shell.eval("git", "ls-files", "-m").strip() != "": raise Exception("Working copy is dirty (override with --force)") - except shell.CallError: - pass for f in os.listdir(os.getcwd()): if f == ".git": continue try: