New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'freeze' and SVN 1.7/1.8 exception and fix #1062

Closed
nOw2 opened this Issue Jul 18, 2013 · 0 comments

Comments

Projects
None yet
1 participant
@nOw2

nOw2 commented Jul 18, 2013

I'm running pip 1.3.1 and despite the #369 fix it is still unable to run 'pip freeze' with SVN 1.7 or 1.8.

My SVN check-outs do not contain a ".svn/entries" file and it fails on this before getting to the fix from #369.

I have a quick fix (of sorts), below.

First, the exception:

# pip freeze
Exception:
Traceback (most recent call last):
  File "pip/basecommand.py", line 139, in main
    status = self.run(options, args)
  File "pip/commands/freeze.py", line 73, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "pip/__init__.py", line 181, in from_dist
    req = get_src_requirement(dist, location, find_tags)
  File "pip/vcs/__init__.py", line 249, in get_src_requirement
    return version_control().get_src_requirement(dist, location, find_tags)
  File "pip/vcs/subversion.py", line 213, in get_src_requirement
    repo = self.get_url(location)
  File "pip/vcs/subversion.py", line 156, in get_url
    return self._get_svn_url_rev(location)[0]
  File "pip/vcs/subversion.py", line 159, in _get_svn_url_rev
    f = open(os.path.join(location, self.dirname, 'entries'))

IOError: [Errno 2] No such file or directory: 'xmlbuilder/.svn/entries'

Storing complete log in /root/.pip/pip.log

The contents of .svn (SVN itself appears to be working fine).

# ls xmlbuilder/.svn/
pristine  tmp  wc.db

My SVN checkouts are all 'svn upgrade'd from SVN 1.6 to 1.7 to 1.8.

Excuse the quick hack, but this is enough to get it working:

# diff pip/vcs/subversion.py.back pip/vcs/subversion.py
159,161c159,164
<         f = open(os.path.join(location, self.dirname, 'entries'))
<         data = f.read()
<         f.close()

---
>         try:
>             f = open(os.path.join(location, self.dirname, 'entries'))
>             data = f.read()
>             f.close()
>         except:
>             data = "SVN >=1.7"

This allows the IOError to pass, and the #369 fix kicks into action because the contents of 'data' can't be parsed as SVN <= 1.6.

xavfernandez added a commit that referenced this issue Jan 13, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment