【问题标题】:Can't hg update, "Unlinking directory not permitted"!无法 hg 更新,“不允许取消链接目录”!
【发布时间】:2014-12-03 20:06:45
【问题描述】:

我有一个通过使用 hgsubversion 克隆 SVN 存储库创建的 Hg 存储库。当我执行“hg update --clean”时出现错误:中止:不允许取消链接目录:'E:\Scratch\svn_to_hg\WorkProject_hg\My Project\PublishProfiles'

如果我指定修订版 1487,则更新工作正常。如果我指定修订版 1488,则会收到错误消息。所以 rev 1488 一定是问题所在。这就是 1488 的样子:

> hg log -v -r 1488
changeset:   1488:d2292eeddb4e
user:        smartin@c08dbded-914e-0410-8527-b5f3b8929523
date:        Wed May 07 15:29:46 2014 +0000
files:       My Project/PublishProfiles/Shea FS.pubxml

这是我将一个文件添加到它抱怨它无法删除的文件夹中。

我在1488之后有200次修订,所以我不知道在这里做什么......

我在 Windows 7 上,使用的是 Tortise HG 附带的 hg 3.1.1。我对最新的 hgsubversion 进行了更新,我还尝试以管理员身份运行该命令,以及旧的“重新启动”。

还有人有想法吗?

更新:我有更新。我可以进行更新,如果我更新到 1487,那么我注意到“PublishProfiles”文件夹实际上是一个空文件!我删除了那个文件,然后我可以更新到 1488 或正确提示。 我想现在的问题是,我怎样才能得到这个,这样其他人就不必每次克隆这个存储库时都这样做?

【问题讨论】:

  • 您应该检查该目录没有设置只读标志。 (不确定这是怎么发生的,但以防万一。)您可以手动删除目录吗?
  • 在 hg update -C 之前目录不存在。更新失败后,有问题的目录在那里,并且是只读的。当我通过属性对话框取消选中只读标志时,它似乎再次将自身设置回只读状态。我还注意到我的其他 Hg 存储库(工作正常)似乎在其目录上设置了 r/o 标志。
  • 我今天遇到了这个问题。出于某种奇怪的原因,我设法提交了一个空目录。 hg 不支持跟踪目录,只支持文件。因此它创建了一个具有目录名称的文件并提交了该文件而不是目录。当构建服务器构建项目时,它正确创建了目录,但将其设为只读。我的解决方法是删除目录文件并提交。如果您构建脚本需要该目录,那么只需从构建脚本创建它。
  • Paw,我的问题是创建空目录的提交之前是 200 次提交。没有办法将其剥离。 Git 似乎支持这种情况,所以我之前的解决方案可以正常工作。

标签: windows mercurial hgsubversion


【解决方案1】:

我不知道这是否会解决您的具体问题,但也许会对其他人有所帮助。 我正在使用 hg 处理 windows(使用 sourcetree)和 Linux。 每当我尝试做推/拉/无论我收到什么信息时。 我在源代码树中所做的是右键单击导致文件的问题 > 停止跟踪 然后再次右键单击并丢弃文件。 我知道这只是暂时的解决方法,但总比没有好

【讨论】:

    【解决方案2】:

    不确定这是否是最佳答案...安装 git。不,我不是在讽刺。以下对我来说完美无缺:

    git svn clone REMOTE_SVN --no-metadata --author-file=user_map.txt TEMP_GIT_REPO
    hg convert -s git -d hg TEMP_GIT_REPO MY_GIT_REPO
    

    这实际上几乎是使用 hgsubversion 的两倍。您将需要启用转换扩展,但我认为 hg 附带了它,因此无需下载。

    ~S

    【讨论】:

    • 为什么这被否决了,这是一个很好的解决方案。特别是如果您像我一样进行一次转换。
    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多