【问题标题】:svn branch (removed .svn folders)svn 分支(删除 .svn 文件夹)
【发布时间】:2011-12-16 23:13:13
【问题描述】:

在将主干合并到分支时,我做错了一些事情。首先,我认为检查主干的新工作副本并“手动”添加所有更改会更容易。然后我认为可以删除分支的“src”文件夹并用主干中的“src”覆盖它。现在很明显 .svn 文件夹不是正确的文件夹(因为它们属于主干而不是分支)。所以我决定删除所有 .svn 文件夹,但现在我不知道如何将它再次添加到分支中最简单,或者如何使用我的所有更改创建一个新分支。

我想到目前为止我做错了一切......

我想我会断开我的项目,检查分支的头版本,但是我又想“覆盖”分支,即或多或少地替换整个“src”文件夹(标准 maven 布局) .

好吧,我或多或少可以断开我的更改与 svn 的连接,这本质上是当前状态(“src”不是工作副本,因此我也可以断开所有内容)。或者,我有一份没有删除 .svn 文件夹的副本,但 .svn 文件夹指向主干,这就是问题所在。

亲切的问候,
约翰内斯

【问题讨论】:

  • 您是否使用带有trunkbranchestags 的“标准”svn 布局?是否所有内容都已提交,或者您是否有本地更改?你使用的是哪个版本的svn
  • 看看svn switch (svnbook.red-bean.com/en/1.0/re27.html)。这可能对您的方案有所帮助。
  • 我有很多变化,我首先想到的是“真正的”合并,但后来使用了主干并将我的更改添加到其中,然后我想我可以复制它,但是是的...是的,我们使用标准的 svn 布局。我的分支是Java7分支,主干使用Java6。
  • 那我就用svn merge,即重启合并过程。
  • 重新启动?地狱,不,我需要整整 3 天,每天大约 12 个工作小时 ;-) 我宁愿创建一个新项目并像我现在所做的那样合并更改,并在每次我必须合并时创建一个新项目 :D :-/见鬼,真是一场灾难……

标签: java svn


【解决方案1】:

当我想将另一个分支中的某些内容替换到另一个分支或其他任何内容(在 Windows 下)时,我使用以下步骤:

1) 从 SVN 服务器检出原始分支的最新副本。假设这是原始副本 {A}

2) 制作一份工作副本。假设这是修改后的副本 {B}

3) 将目录更改为 {B} 的根目录并从 {B} 的所有文件夹和子文件夹中删除隐藏的 .svn 文件夹

CD "{B}"

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G"

4) 将 {B} 复制到 {A}

5) 提交 {A}

【讨论】:

  • 谢谢,这也是我的想法和我所做的,加上在 5) 之前删除了一些过时的类 ;-) 和一个小 shell 突击队来删除 .svn 目录 ;-)
【解决方案2】:

听起来您正试图放弃在分支上所做的所有更改,并将其替换为主干上的确切代码。在这种情况下,为什么不直接删除整个分支,并根据主干的当前状态创建一个新分支?

【讨论】:

    【解决方案3】:

    @eee 的 5 步计划应该可以帮助您将工作副本更改集成到 SVN(Trunk 或 Branch)中。

    如果您希望使用来自 Trunk 的更改来升级您的分支,您可以考虑此处描述的“Bunny Hopping”方法:http://designbygravity.wordpress.com/2009/10/19/what-mother-never-told-you-about-svn-branching-and-merging/

    基本上,从 Trunk 创建一个新分支,将旧分支合并到新分支中,然后删除旧分支。如果您有未提交的工作副本更改,则可以将这些更改复制到新的工作副本中。

    请注意,使用 SVN 1.7 客户端,删除 .svn 文件夹要容易得多,因为工作副本的根目录中只有 1 个。

    【讨论】:

    • 我还是 svn,版本 1.6.12 (r955767) 编译于 2011 年 8 月 5 日,17:07:24 从 Ubuntu ;-)
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多