You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If I have a git repository that does not have a remote, get_reproducibility_info will fail with a CalledProcessError exception. It appears that if a git repo is present, Tap assumes it has an origin remote, yet this need not be the case. I often use local git repos for initial development before pushing them somewhere.
Reproducer:
$ mkdir test
$ cd test
# Write test.py appropriately...
$ cat test.py
from tap import Tap
class ArgumentParser(Tap):
foo: bool = False
if __name__ == '__main__':
args = ArgumentParser().parse_args()
print(args.get_reproducibility_info())
# Run with no git repo and it works fine:
$ python test.py
{'command_line': 'python test.py', 'time': 'Tue Feb 28 13:03:00 2023'}
# Set up a git repo to break it:
$ git init
$ python test.py
Traceback (most recent call last):
File "/home/ndryden/envs/test/lib/python3.9/site-packages/tap/utils.py", line 82, in get_git_url
url = check_output(['git', 'remote', 'get-url', 'origin'], cwd=self.repo_path)
File "/home/ndryden/envs/test/lib/python3.9/site-packages/tap/utils.py", line 45, in check_output
output = subprocess.check_output(command, stderr=devnull, **kwargs).decode('utf-8').strip()
File "/home/ndryden/envs/test/lib/python3.9/subprocess.py", line 424, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/home/ndryden/envs/test/lib/python3.9/subprocess.py", line 528, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'remote', 'get-url', 'origin']' returned non-zero exit status 2.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ndryden/test/test.py", line 8, in <module>
print(args.get_reproducibility_info())
File "/home/ndryden/envs/test/lib/python3.9/site-packages/tap/tap.py", line 392, in get_reproducibility_info
reproducibility['git_url'] = git_info.get_git_url(commit_hash=True)
File "/home/ndryden/envs/test/lib/python3.9/site-packages/tap/utils.py", line 85, in get_git_url
url = check_output(['git', 'config', '--get', 'remote.origin.url'], cwd=self.repo_path)
File "/home/ndryden/envs/test/lib/python3.9/site-packages/tap/utils.py", line 45, in check_output
output = subprocess.check_output(command, stderr=devnull, **kwargs).decode('utf-8').strip()
File "/home/ndryden/envs/test/lib/python3.9/subprocess.py", line 424, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/home/ndryden/envs/test/lib/python3.9/subprocess.py", line 528, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['git', 'config', '--get', 'remote.origin.url']' returned non-zero exit status 1.
This is because the remote origin does not exist, and git remote get-url origin returns status 2 in this case:
$ git remote get-url origin
error: No such remote 'origin'
(Likewise, git config --get remote.origin.url returns status 1.)
You might be able to solve this by checking whether origin exists with git remote -v before executing this.
Incidentally, after adding a fake origin remote this reveals another bug, where git rev-parse HEAD fails when there are no commits, leading to a similar exception. Not sure if this deserves a separate issue (and seems like even more of an edge-case).
The text was updated successfully, but these errors were encountered:
If I have a git repository that does not have a remote,
get_reproducibility_info
will fail with aCalledProcessError
exception. It appears that if a git repo is present, Tap assumes it has anorigin
remote, yet this need not be the case. I often use local git repos for initial development before pushing them somewhere.Reproducer:
This is because the remote
origin
does not exist, andgit remote get-url origin
returns status 2 in this case:(Likewise,
git config --get remote.origin.url
returns status 1.)You might be able to solve this by checking whether
origin
exists withgit remote -v
before executing this.Incidentally, after adding a fake origin remote this reveals another bug, where
git rev-parse HEAD
fails when there are no commits, leading to a similar exception. Not sure if this deserves a separate issue (and seems like even more of an edge-case).The text was updated successfully, but these errors were encountered: