mercurial + OSX ==失败? hg log abort:是一个目录

时间:2009-04-08 14:35:14

标签: python macos mercurial

$ mkdir foo
$ cd foo
$ hg init .
$ hg log
abort: Is a directory
$ hg history
abort: Is a directory

Darwin Host.local 9.6.1 Darwin内核版本9.6.1:Wed Dec 10 10:38:33 PST 2008; root:xnu-1228.9.75~3 / RELEASE_I386 i386

$ hg --version
Mercurial Distributed SCM (version 1.2.1)
$ python --version
Python 2.5.4

(全部通过macports安装)

思考?谷歌没有给我们什么。

更新

(以root身份):

$ hg init /tmp/foo
$ cd /tmp/foo; hg log
(works)

(以用户身份):

$ hg init /tmp/bar
$ cd /tmp/bar; hg log
abort: Is a directory

所以特拉维斯是对的(见评论)它确实看起来像某个地方的许可问题,但在哪里?这是Leopard的库存安装,只有一周的时间和macport版本的python和mercurial的库存安装。我希望当有权限问题时,这不是一个好的错误消息的想法。

第二次更新(来自下面的dkbits建议):

$ sudo dtruss hg log
[snip]
...
stat("/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-   packages/mercurial/templates/gitweb\0", 0xBFFFC7DC, 0x1000)      = 0 0
open_nocancel("/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/mercurial/templates/gitweb\0", 0x0, 0x1B6)        = 3 0
fstat(0x3, 0xBFFFC900, 0x1B6)        = 0 0
close_nocancel(0x3)      = 0 0
write_nocancel(0x2, "abort: Is a directory\n\0", 0x16)       = 22 0

此外,临时目录是您期望的目的。权限看起来还不错。

4 个答案:

答案 0 :(得分:1)

不能直接回答您的问题,但我已经成功地使用了来自here的Mercurial预打包二进制文件和OSX 10.5上的标准Python 2.5.1安装。

$ mkdir foo
$ cd foo
$ hg init .
$ hg log
$ hg history

$ hg --version
Mercurial Distributed SCM (version 1.2.1)

$ python --version
Python 2.5.1

答案 1 :(得分:1)

https://www.mercurial-scm.org/bts/issue233开始,有一个有趣的追溯:

hg --traceback qpop
Traceback (most recent call last):
  [...]
  File "/export/home/bos/lib/python/mercurial/util.py", line 747, in o
    rename(mktempcopy(f), f)
  File "/export/home/bos/lib/python/mercurial/util.py", line 690, in mktempcopy
    fp.write(posixfile(name, "rb").read())
IOError: [Errno 21] Is a directory
abort: Is a directory

也许权限错误与您的临时文件夹有关?要找到临时目录,请执行..

$ python
>>> import tempfile
>>> print tempfile.gettempdir()

应该在/var/folders/[...]/[...]/-Tmp-/

同样受到上述链接的启发,您可以尝试运行..

$ hg init /tmp/bar
$ cd /tmp/bar
$ hg --traceback log

答案 2 :(得分:0)

我发现了问题:

如果你将.hgrc符号链接到某处,就会导致这种情况发生。肯定是mercurial中的一个错误(以及一个愚蠢的错误消息)。

$ rm -f ~/.hgrc
$ hg init foo
$ cd foo
$ hg log

(作品)

$ ls -l ~/Dropbox/.hgrc
-rw-r--r--@ 1 schubert  staff  83 Jan  9 02:15 /Users/schubert/Dropbox/.hgrc
$ ln -s ~/Dropbox/.hgrc ~/.hgrc
$ hg log
abort: Is a directory
$ rm -f ~/.hgrc
$ hg log

(作品)

答案 3 :(得分:0)

我又看了一眼,它实际上是由.hgrc行引起的:

style = gitweb

为什么我不确定,但错误信息确实很糟糕。