我遇到了一个问题,用户无法将他的提交推送到Mercurial存储库,并且为什么它不能为他工作而感到困惑.我已经尝试了几件事来弄清楚是什么了,谷歌搜索没有发现任何有用的东西......所以我在这里.
一,配置.我们的网络上有一台Windows XP SP2 x64机器作为我们的官方存储库服务器.它包含几个存储库.我们使用共享的驱动器上的文件夹克隆/推/拉.每个人都有权限进行读取访问.可以推送的用户(包括有问题的用户)可以完全控制.用户的机器是基于Win XP的.我的机器(用于帮助排除故障)也是基于Win XP的.
二,症状.用户正在使用TortoiseHg 2.1.1来完成他的工作.他可以克隆得很好,承诺他的本地回购是等等.当他试图推,但是,TortoiseHg返回一个"abort,ret 255"代码.不是很有帮助.所以,我们已经去了命令行并发布了"hg push -v --debug".这里返回"abort:Access is Denied".这个用户可以写到服务器的共享文件夹没问题 - 他也可以创建文件,目录和删除相同的文件.因此,读/写访问驱动器/文件夹不是问题.
第三,我们的实验结果.以下是测试中的一些奇怪结果.用户创建了一个新的本地测试存储库.我登录到服务器机器并创建了一个测试仓库供他推送.用户签入文件,然后将其推送到服务器计算机上的测试仓库.这很好.没有中止.生活很美好.他能够做更多的推动,并继续按预期工作.然后我将repo克隆到我的机器上,更新了一个文件,并将其推回原处.在用户然后拉入我的更改并尝试推回服务器之后,他再一次遇到了可怕的"访问被拒绝"消息.同时,我仍然可以毫无问题地更新项目.
作为另一个实验,我们让用户注销,另一个用户登录.他们这样做了,并且能够毫无问题地推送到服务器仓库.原始用户重新登录,进行一些更改等,再次点击"访问被拒绝"的砖墙.
据我们所知,该问题与Windows凭据无关.否则,我们希望在服务器的共享文件夹上创建任意文件是行不通的.此外,在我对用户创建的测试仓库进行更新之前,他可以推送到该特定仓库.
有任何想法吗?Mercurial进行哪些额外的凭证检查可能会导致此问题?
更新:
在Wim提示之后,我开始使用'cacls'查看repo各种对象的权限.这是一个"显示或修改文件的访问控制列表"的Windows工具.我让用户创建了一个新的repo,然后获取了权限的快照.然后我检查了一个文件到同一个repo并拍摄了另一个更改快照.
事实证明,有几个repo文件权限因此而得到更新:undo.bookmarks,undo.branch,undo.desc,undo.dirstate,branchheads,00changelog.i,00manifest.i,undo和single存储库的文件.所有这些文件都具有类似于以下内容的权限:
C:\Projects\Mercurial\hgtest4\.hg\store\undo BUILTIN\Administrators:F
NT AUTHORITY\SYSTEM:F
DOMAINxxxx\USERIDxxxx:F
BUILTIN\Users:R
Run Code Online (Sandbox Code Playgroud)
(实际的DOMAINxxxx和USERIDxxxx值已被更改).在我办理登机手续之前,DOMAINxxxx和USERIDxxxx反映了用户的域名和用户ID.在我办理登机手续后,这些已经更新到我的(我们在同一个域,但用户ID显然是不同的.)我能够检查进出的内容,即使我的用户ID没有列出因为我是BUILTIN\Administrators组的成员.有问题的用户不是.所以,我猜测在我检查完之后,系统不再将他视为具有写访问权限的凭证用户(BUILTIN\User:R表示只读访问),因此导致访问拒绝.
我现在有一个非常严格的Q&D修复程序(用户现在是Admin组的一部分......)真正的修复方法是将repo从Windows共享中恢复到适当的服务器配置.
我注意到我的Galaxy Nexus android.content.res.Resources分配了大约11MB.我发现这是因为我正在使用DDMS和" Dump HPROF file"选项分析事物.所以,我花了两个小时试图查看分配是由于我的代码或支持库中的某些内容.我删除了所有数据,大量的类,我的所有库,并没有看到任何变化.在onCreate()活动方法开始时在我的代码中放置一个断点后,它显示11MB分配已经存在.
在彻底混淆之后,我决定连接我运行CM7的root用户Nook Color,看看它是针对完全相同的应用程序的初始内存使用情况报告的内容.由MAT报告的最坏情况记忆"问题可疑"的重量仅为896KB.
ICS是头重脚轻的吗?我在这里错过了什么吗?据我所知,我的应用程序运行正常,但堆使用率表示97%已满,让我担心潜在的故障.
如果它有帮助,MAT表明消耗所有内存的主要对象是Bitmaps BitmapDrawables,和NinePatchDrawables.我不明白这些分配来自何处.