【问题标题】:Moving duplicate directory structures onto one another将重复的目录结构相互移动
【发布时间】:2010-06-12 23:55:30
【问题描述】:

我在两个位置有重复的目录结构,我需要将它们合并到一个 svn 存储库中。 “合并”是指我希望将结构 b 独有的所有文件和文件夹移动到结构 a 中。当我尝试使用 svn move 执行此操作时,出现错误

svn: Path 'com' already exists

文件夹如下所示:

src
 -> com
    -> (many more files and directories)
 -> java
    -> com
       -> (some files and folders, some folders overlap but all files are unique)

src\comasrc\java\comb

【问题讨论】:

  • 在与几个人交谈并试验了几个小时后,我想知道这是否可以使用 svn。上周我对 svn 的体验大大降低了我对它的看法。使用 Mercurial 或 git imo。不幸的是,这不是我的选择,它是一个有 10 年历史的存储库,有 50 位开发人员使用它,还有 50 多个其他人从它那里阅读。

标签: svn merge


【解决方案1】:

您可以将源“com”路径的整个历史记录合并到目标路径中,这将保留这些文件的历史记录,例如

svn merge -r 1:HEAD svn://repository-path-to/com working-copy-path-to/com

您需要确保修订范围包括将第一个文件添加到源“com”文件夹的修订。

【讨论】:

  • 这不起作用。我运行了我能做的每一个变体,没有任何事情发生,没有错误,没有变化,什么都没有。不过我很感激你的努力:)
【解决方案2】:

与几个人交谈后,我得出的结论是 svn 不支持这种行为。

可以通过编写一个脚本来读取 java\com 的内容并为每个项目生成一个 svn move 命令来产生相同的结果。如果在许多级别上存在重叠的文件和目录,那么这将不起作用。目录重叠可以通过扩展脚本来抓取目录层次结构、标记重叠并移动它们的内容来处理。文件重叠必须手动处理,并且没有脚本能够决定在所有情况下保留哪个文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多