ancestor: RefOrRev,
force: bool = False) -> None:
if not force and not is_ancestor(repo, descendant, ancestor):
- raise Exception('%s is not an ancestor of %s' % (ancestor, descendant))
+ raise Exception(f'{ancestor} is not an ancestor of {descendant}')
def _read_fetch_log(repo: Repo) -> Iterator[_LogEntry]:
filename = _log_filename(repo)
os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, 'a') as f:
- f.write('%s %s %s %s\n' %
- (time.strftime('%Y-%m%d-%H:%M:%S%z'),
- ('FORCEDFETCH' if force else 'fetch'), rev, ref))
+ f.write(
+ f'{time.strftime("%Y-%m%d-%H:%M:%S%z")} '
+ f'{"FORCEDFETCH" if force else "fetch"} {rev} {ref}\n'
+ )
def _show_force_warning() -> None:
''', end='', file=sys.stderr)
for i in range(warn_time, 0, -1):
- msg = '* %-70s *' % ("Continuing in %d seconds..." % i)
+ msg = f'* {f"Continuing in {i} seconds...":-70s} *'
print(msg, file=sys.stderr)
time.sleep(1)
print('*' * 74, file=sys.stderr)
force: bool = False) -> None:
subprocess.run(['git', '-C', cachedir, 'fetch'] +
(['--force'] if force else []) +
- [repo, '%s:%s' % (ref, ref)], check=True)
+ [repo, f'{ref}:{ref}'], check=True)
def fetch(repo: Repo, ref: Ref, force: bool = False) -> Tuple[Path, Rev]:
args = parser.parse_args()
if args.rev is None:
- print('{1} {0}'.format(*fetch(args.repo, args.ref, force=args.force)))
+ cachedir, rev = fetch(args.repo, args.ref, force=args.force)
+ print(f'{rev} {cachedir}')
else:
print(
ensure_rev_available(