【发布时间】:2017-03-08 17:09:16
【问题描述】:
我使用 Tortoisehg 已经有一段时间了,几乎没有问题,但遇到了以下问题:
我无法推送或提交到我的主存储库。我对项目中的一个文件进行了小改动,在本地提交没有问题,但推送到主仓库失败:
% hg --debug push "Z:\[main repo]"
pushing to Z:\[main repo]
query 1; heads
searching for changes
all remote heads known locally
listing keys for "bookmarks"
1 changesets found
list of changesets:
09d372b8d90710f2ad772dc4164fd640d6869208
adding changesets
add changeset 09d372b8d907
adding manifests
adding file changes
adding GEM.py revisions
transaction abort!
rollback completed
abort: Permission denied: Z:\[main repo]\.hg/store\data\._g_e_m.py.i-dmz4wn
[command returned code 255 Thu Mar 09 14:17:01 2017]
主存储库位于(Windows)文件服务器上,我从 Windows 机器提交。我确信我没有用完配额。 我没有更改主仓库的权限,我是所有数据的所有者,并且还尝试为自己分配“完全控制权”(默认情况下,我只有读写权限——实际上不知道有什么区别),但无济于事.
我还尝试在主仓库中编辑更改的文件并在那里提交:
% hg commit --verbose "--message=GEM.py: [message]" --user [user] -- "Z:\[main repo]\GEM.py"
GEM.py
trouble committing GEM.py!
abort: Permission denied: Z:\[main repo]\.hg/store\data\._g_e_m.py.i-kbxvue
[command returned code 255 [date]]
现在,有趣的是,Mercurial 抱怨的文件似乎一开始并不存在。该目录中只有一个名为_g_e_m.py.i 的文件。我确保在文件管理器中显示了隐藏文件,并且我也从 Linux 中查看,只是为了确保。
我还尝试将 repo 克隆到不同的位置,然后推送到新的 repo,但这没有任何改变。
我在此站点上找到了this answer,但我在 repo 文件夹中没有文件 .hg/wlock(或任何类似名称的文件)。
更新: 由于被问到:主 repo 上 .hg/store/data 目录的权限是:
.hg [domain]\Domain Admins:(I)(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
[domain]\[user]:(I)(OI)(CI)(M)
在我的本地,它是:
.hg Everyone:(I)(OI)(CI)(F)
所以有区别。在 .hg 目录中,可能是因为我在尝试单独解决问题时弄乱了权限,有这样的:
store\data [domain]\[user]:(OI)(CI)(F)
CCNT\Domain Admins:(I)(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
[domain]\[user]:(I)(OI)(CI)(M)
是的,这是我的用户名,两次。更改权限时我可能违反了一些约定...我可以使用 Posix 权限,但这对我来说有点不透明。
一个潜在的线索:tortoisehg 很有可能在问题出现之前就崩溃了,或者失去了网络连接。我在家里使用 VPN,这种事情可能会发生。因此,如果 Mercurial 阻止任何文件/目录,则可能会有一些阻止,尽管我不知道如何验证/修复它。自问题出现以来,所有可能负责阻止该目录的机器都已重新启动 - 当然托管数据的文件服务器除外。
我还更新了上面的语句以添加--debug 输出。文件名后面的随机字母/数字发生了变化,因为我在文件中进行了更多更改。这表明它实际上不是那个特定的文件(无论如何都不存在),而是 mercurial 尝试写入的目录。
【问题讨论】:
-
看看stackoverflow.com/questions/7771862/…,尤其是使用
--debug以获得更好的诊断和iCacls 工具的建议。 -
您是否检查/确认您没有尝试以不同的大写形式提交同一个文件? Windows 在这方面很糟糕......
-
@planetmaker:我将两次出现的“True”更改为“False”。不是很多,但有区别。我测试了回滚并做出更大的改变——同样的问题。
-
@marco.m:我更新了问题以包括 --debug 输出和文件权限,以及自发布以来我注意到的其他内容。希望那里有一些有用的东西,因为我仍然没有看到解决方案
-
对不起,我的意思不是对同一个文件进行更改,而是对除大写外名称相同的文件进行更改,例如。 gem.py 和 Gem.py
标签: mercurial tortoisehg