【问题标题】:Creating a local SVN branch创建本地 SVN 分支
【发布时间】:2016-01-04 03:53:18
【问题描述】:

我正在开发一个 SVN 存储库,不想创建新的 SVN 分支。相反,我想在我的机器上创建一个本地分支,这可以通过Git 轻松完成。

但我目前正在使用 SVN,需要从已经修改的 SVN 版本中分支出来。本质上,我想要以下内容:

  • svn_repo_version = 2259
  • working_copy = 修改 2259
  • new_local_svn_branch = 基于修改后的 2259

最好的方法是什么?

【问题讨论】:

  • 不是您问题的直接答案,但您可以使用 git-svn 桥接器,以便您可以在本地使用 git 与 SVN 服务器通信,这通常是我的做法。这样你就可以得到当地的分支机构。见:stackoverflow.com/questions/5247435/…
  • 您需要在本地进行修订跟踪吗?这在 svn 中是不可能的。
  • @vcsjones:我以前做过。我正在考虑这样做。但我想检查我们是否可以用 svn 本身做点什么。谢谢。
  • @Mike:我的机器被本地副本破坏了。这就是我探索这个选项的原因。
  • @vcjones - 我认为这实际上是操作人员想要听到的,而不是他们将要得到的答案。你应该给出这个答案。

标签: svn version-control repository tortoisesvn


【解决方案1】:

Subversion 是一个集中的版本控制系统。集中式系统的一些优点是它迫使每个人都使用相同的代码库。你不能一次隐藏你的工作几个月,然后在大版本发布前两天突然把它放下。不好的部分是你不能真正拥有一个私有分支而不让它出现在存储库中。

您没有理由不能创建自己的分支。事实上,我曾经为我们的开发人员提供一个特殊的“私有”目录,他们可以在其中放置自己的代码,并进行私有分支。我有一个预提交脚本,只允许分支的所有者进行更改,尽管我已经设置了它,所以任何人都可以看到它。

如果您担心您的私有分支可能会阻塞branches 目录,请记住您可以在完成后从branches 目录中删除一个分支。或者,您可以请求一个并行的 private 目录,您可以在其中放置您的东西。

如果您真的想创建一个真正的私有区域,您可以在其中使用 Subversion 并签入代码而不出现在主存储库中,我知道您有两种选择:

  • SVK:这是一个前端分布式版本控制系统,后端使用 Subversion。您可以创建自己的 Subversion 存储库,并在本地存储库和主存储库之间来回发布更改。

  • Git:Git 带有一个名为 git-svn 的工具,它允许您将数据从 Subversion 存储库中提取到本地 Git 存储库中。然后,您可以使用本地 Git 存储库进行分支,然后将更改的内容推送回 Subversion。甚至还有 Tortoise 的 Git 版本。

唯一需要注意的是,您必须亲自使用这两种工具的命令行界面。

【讨论】:

  • 还有 Mercurial 可以使用 subversion 插件与 SVN 服务器交互 - 对于那些对命令行不满意的人来说,还有 TortoiseHg。
  • 我处于完全相同的位置,为此我使用了一个私有的git svn 存储库。当我完成一个功能时,我 git rebase 我在主(远程)分支上的本地更改并执行 git svn dcommit。我已经这样工作了很长时间。额外的好处:您可以在家工作,无需连接到 Subversion 服务器。
  • “你没有理由不能创建自己的分支”在我的工作中,我们被禁止创建自己的分支。 (因此,我在这里......)
【解决方案2】:

恐怕您将不得不创建一个新分支并将所有更改合并到其中。唯一的选择是简单地签出分支,继续更新并且在完成之前不要提交(或在提交之前继续切换)。如果您需要在原始分支/主干上工作,您总是可以有两个工作副本。远非理想,但这就是 SVN 的工作方式,考虑到当时的替代方案,这仍然非常好。

如果您希望通过我的 IDE (Eclipse) 管理本地历史记录,我会亲自管理。

【讨论】:

  • 当然,如果您是唯一一个在该分支上工作的人,那么这并不是什么大问题,在您提交所有内容之前进行分支和切换。假设您不依赖 svn 也进行备份(这很糟糕!)。
  • 这又类似于拥有 2 个本地副本。我正在做彼此无关的小实验。所以,我需要单独的副本。但最后,我需要合并所有这些。这就是我探索这个选项的原因。我想我需要使用 svn-git。谢谢
  • @agent.smith 我想你会的。当然,如果它们是实验,它们应该(遵循 svn 哲学)是单独的分支。如果您对此感到满意并假设您的质量程序允许,我会选择 git-svn ;-)
  • 你明白了。这就是为什么我不想走那条路。我正在尝试让 svn 客户端指向我的本地副本作为主仓库。但它不喜欢那样。 :(
  • @agent.smith 就我个人而言,如果它们只是我的实验,我会依赖工作副本并使用我认为适合本地的任何内容(eclipse 本地历史、git-svn 等),如果他们在哪里演示||需要共享||记录我会分支。你总是可以推动迁移到 git!祝你好运;-)
猜你喜欢
  • 2012-07-10
  • 2011-03-19
  • 1970-01-01
  • 2011-01-24
  • 2012-08-17
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2017-12-15
相关资源
最近更新 更多