"""
resolved = True
files = set()
+ files = {}
for status in shell.eval("git", "ls-files", "--unmerged").splitlines():
- files.add(status.split()[-1])
- for file in files:
+ mode, hash, role, name = status.split()
+ files.setdefault(name, set()).add(int(role))
+ for file, roles in files.items():
+ # some automatic resolutions
+ if 1 not in roles and 2 not in roles and 3 in roles:
+ # upstream added a file, but it conflicted for whatever reason
+ shell.call("git", "add", file)
+ continue
+ elif 1 in roles and 2 not in roles and 3 in roles:
+ # user deleted the file, but upstream changed it
+ shell.call("git", "rm", file)
+ continue
# manual resolutions
if file in self.resolutions:
contents = open(file, "r").read()