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.