2011-06-01 163 views
13

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

但我目前使用SVN,需要从已经修改的SVN版本分支出来。从本质上讲,我想以下几点:

  • svn_repo_version = 2259
  • working_copy =修改2259
  • new_local_svn_branch =基于改性2259

什么是去了解它的最佳方式?

+4

不是你的问题的直接答案,但你可以使用git-svn桥向前走,这样你就可以在本地使用git与SVN服务器通信,这通常是我的做法。这样你得到当地的分支机构。请参阅:http://stackoverflow.com/questions/5247435/can-i-use-git-svn-and-look-like-i-was-using-svn-if-yes-how/5247542#5247542 – vcsjones 2011-06-01 19:26:36

+2

你需要本地修订跟踪?这对svn来说是不可能的。 – 2011-06-01 19:29:36

+0

@vcsjones:我以前做过。我正在考虑这样做。但是我想检查一下,我们是否可以用svn来做些什么。谢谢。 – 2011-06-01 19:32:41

回答

12

Subversion是一个集中版本控制系统。集中式系统的一些优点是它可以强制每个人使用相同的代码库。你不能一次隐藏你的作品几个月,然后在主要发布前两天突然把它放下。不好的部分是你不能真正拥有一个私人分支,也没有它显示在存储库中。

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

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

如果你真的想建立一个真正的私人区域,您可以使用Subversion和检查代码,而它的主要存储库中出现,你有两个选择,我知道的:

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

  • Git:Git自带了一个名为git-svn工具,它允许你拉数据从Subversion仓库到本地Git仓库。然后,您可以使用您的本地Git存储库进行分支,然后再将其更改回Subversion。甚至有一个Git版本Tortoise

唯一需要注意的是,您将不得不用命令行界面将这些工具弄脏手。

+0

还有Mercurial可以使用Subversion插件与SVN服务器进行交互 - 对于那些也有TortoiseHg不满意的命令行。 – 2013-11-29 06:41:08

2

恐怕你将不得不创建一个新的分支并不断合并任何改变。唯一的选择是简单地签出分支,不断更新,不要提交(或在提交之前保持切换),直到完成。如果您需要在原始分支/主干上工作,您总是可以有两份工作副本。远非理想,但这就是SVN的工作方式,鉴于当时的选择,这仍然非常好。

我亲自管理本地历史,如果这是你通过我的IDE(Eclipse)之后。

+0

当然,如果你是唯一一个在那个分支上工作的人,那么它并不是什么大问题,在你完成所有事情之前,分支并切换。假设你不依赖svn来做备份(这很糟糕!)。 – vickirk 2011-06-01 19:30:58

+0

这又相当于有2个本地副本。我正在做一些彼此不相关的小实验。所以,我需要单独的副本。但最后,我需要将它们全部合并。这就是为什么我正在探索这个选项。我想我需要使用svn-git。谢谢 – 2011-06-01 19:35:28

+0

@ agent.smith我认为你可以。当然,如果他们是实验,他们应该(遵循svn哲学)成为独立的分支。如果你对此感到满意,并假设你的质量程序允许,我会和git-svn一起去;-) – vickirk 2011-06-01 19:39:50