【问题标题】:AnkhSVN and/or TortoiseSVN - what's the recommended way to change directory structures?AnkhSVN 和/或 TortoiseSVN - 更改目录结构的推荐方法是什么?
【发布时间】:2009-12-11 17:30:04
【问题描述】:

我是 Ankh 和 Tortoise 的新用户。目前正在开发一个 VS2008 应用程序套件,该套件将有多个 .exe 文件,但有很多通用代码。

目前,我们通过将源文件放在“共享”文件夹树中,并在所有需要编译这些文件的 VS2008 项目中使用“添加为链接”来在 .exe 项目之间共享代码。 (我们从 VisualSVN 开始,但后来改用 Ankh,因为它可以更好地处理链接文件。)

我们遇到的问题是我们仍在积极修改共享文件夹树的结构 - 添加新文件夹,并随着项目的发展将现有文件移入其中。

一直主要使用 Tortoise 来更改目录结构,但一直遇到问题 - 似乎与存储库不同步。我们收到错误消息,提示文件丢失或树冲突。

我怀疑问题可能是我们有时会以错误的顺序执行操作 - 例如,在移动目录然后提交之前忘记执行更新 - 但我不确定。

所以,我的问题:

更改目录结构的更好工具是 Ankh 还是 Tortoise?

对于首选工具,必须执行哪些步骤,按什么顺序执行?

【问题讨论】:

    标签: svn tortoisesvn directory-structure ankhsvn


    【解决方案1】:

    我发现使用 TortoiseSVN 更容易进行文件系统级别的重组。但是,有一个问题:

    使用 TortoiseSVN 移动文件系统上的文件时:

    • 右键文件
    • 将其拖到新的目的地
    • 松开鼠标右键
    • 在显示的菜单中选择“SVN Move”

    如果您只是随意移动文件而不执行上述操作,TortoiseSVN 会非常困惑并按照您的描述做出反应。

    【讨论】:

    • 不知道你能做到。比我的方式容易得多!
    • @antik - 谢谢!那是丢失的信息。我现在看到它在帮助中(第 4.12 节)——我上次看时不知何故错过了它。
    • 另外一点 - 在将文件添加到新目录时,我发现我需要在拖动文件之前将新的空文件夹提交到 SVN。否则,当您将文件放到新文件夹中时,菜单上不会显示 Tortoise 选项。
    • @Tom- 非常欢迎:很高兴它得到了修复。您首先添加 + 提交文件夹是对的:您的 SVN 不明白移动到未版本化文件夹是什么,因为对于它来说,该文件夹不存在。通过先添加,您稍后会要求移动到已知目的地。
    【解决方案2】:

    将所有共享代码编译为 DLL,然后从其他项目中引用它不是更容易吗?

    问题是您将共享文件夹的目录结构强耦合到您的所有项目 - 这势必会给您带来麻烦,尤其是如果它发生变化。

    至于使用哪个 svn 客户端 - 我建议使用 Tortoise 进行任何不纯粹在单个 VS 解决方案中的更改,并且您组织代码的方式向我表明您正在谈论的更改涉及多个解决方案。因此,请使用乌龟。

    在 Tortoise 中轻松移动物体的关键是使用 右键单击拖动功能,它会执行 svn 感知移动。

    【讨论】:

    • 在这里构建一个 DLL 听起来绝对是一个更好的解决方案。好电话。
    • 我开始认为 DLL 也会更好。作为测试,我只是将一些文件移动到一个新的共享文件夹,然后必须通过删除和重新添加文件来更新两个项目。因为忘记重新添加设计器文件,浪费了更多时间。
    【解决方案3】:

    重新组织目录结构实际上非常棘手,它既不是 Tortoise 也不是 Ankh 问题,它只是一个 Subversion 问题。

    问题在于 SVN 理解添加/删除但不理解“移动”或“重命名”。所以你有一个文件夹,里面有相同的隐藏 .svn 元数据,但现在移动到了不同的地方,这让 SVN 感到困惑。

    更新:查看antik的解决方案,这比手动处理元数据要好。

    【讨论】:

    • svnbook.red-bean.com/en/1.0/re18.html 移动是复制然后删除。复制与添加完全不同。 SVN 是对 CVS 的改进,CVS 过去在移动文件后无法识别文件的先前历史记录,因此您会截断您的更改日志 IIRC。
    【解决方案4】:

    乌龟!!我在使用 AnkhSVN + VS2008 时遇到了问题。我通常在执行“提交”之前执行“更新”

    【讨论】:

    • 如果您同时使用两者,您在 Tortoise 中所做的更改将不会反映在 Ankh 中,直到您在挂起的更改窗格上点击刷新。您的更新只是导致此刷新。不过,在提交前更新并不是一个坏主意:如果你在提交之前获得了新代码,你也应该编译 :)
    • 那些是什么问题?在不说明它与移动/重命名目录有什么关系的情况下提及这一事实并不是很有用?
    • 您应该在提交每个 subversion 客户端之前进行更新,因为更新不会跟踪移动。 (因此建议在搬家后立即提交)。但是你的问题是什么? AnkhSVN 2.1 跟踪我的文件移动得很好。每个 subversion 客户端都以相同的方式移动。 Subversion 1.7 将解决 Windows 上的大多数大小写更改问题。
    • @antik:我从来没有说过我同时使用它们
    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2017-07-18
    • 2017-04-15
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多