You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@allura.apache.org by Dave Brondsema <da...@brondsema.net> on 2018/01/30 22:17:37 UTC
[allura:tickets] #8181 Non-bare git repos cause "Broken pipe" error
---
** [tickets:#8181] Non-bare git repos cause "Broken pipe" error**
**Status:** open
**Milestone:** unreleased
**Created:** Tue Jan 30, 2018 10:17 PM UTC by Dave Brondsema
**Last Updated:** Tue Jan 30, 2018 10:17 PM UTC
**Owner:** nobody
If a git repo directory is not a "bare" repo, the webpages error with this:
```
File '/var/local/allura/ForgeGit/forgegit/model/git_repo.py', line 594 in head
if head.is_valid():
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/refs/symbolic.py', line 323 in is_valid
self.object
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/refs/symbolic.py', line 161 in _get_object
return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/objects/base.py', line 64 in new_from_sha
oinfo = repo.odb.info(sha1)
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/db.py', line 37 in info
hexsha, typename, size = self._git.get_object_header(bin_to_hex(sha))
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/cmd.py', line 514 in get_object_header
return self.__get_object_header(cmd, ref)
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/cmd.py', line 501 in __get_object_header
cmd.stdin.write(self.__prepare_ref(ref))
IOError: [Errno 32] File '/var/local/allura/ForgeGit/forgegit/model/git_repo.py', line 594 in head
if head.is_valid():
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/refs/symbolic.py', line 323 in is_valid
self.object
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/refs/symbolic.py', line 161 in _get_object
return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/objects/base.py', line 64 in new_from_sha
oinfo = repo.odb.info(sha1)
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/db.py', line 37 in info
hexsha, typename, size = self._git.get_object_header(bin_to_hex(sha))
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/cmd.py', line 514 in get_object_header
return self.__get_object_header(cmd, ref)
File '/var/local/env-allura/lib/python2.7/site-packages/GitPython-0.3.2rc1.post20140304-py2.7.egg/git/cmd.py', line 501 in __get_object_header
cmd.stdin.write(self.__prepare_ref(ref))
IOError: [Errno 32] Broken pipe
```
The underlying error is as follows. (And I believe is executed in the parent dir instead of in the .git dir)
```
fatal: Not a git repository (or any parent up to mount point /gitrepo)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
```
Omitting `odbt=git.GitCmdObjectDB` from the `git.Repo` constructor seems to avoid the issue a little bit, but a repo refresh is needed and that still errors. Anyways, changing `odbt` could have other unwanted affects.
I think the best workaround is to change the repo to a bare repo. E.g. fork to a new location, remove original, fork back. Or do a local check out, remove repo, create new one, push all branches back.
---
Sent from forge-allura.apache.org because dev@allura.apache.org is subscribed to https://forge-allura.apache.org/p/allura/tickets/
To unsubscribe from further messages, a project admin can change settings at https://forge-allura.apache.org/p/allura/admin/tickets/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.