仅将某些SVN修订从一个存储库复制到另一个存储库

时间:2010-06-29 03:10:44

标签: svn tortoisesvn visualsvn-server

我在linux服务器上运行SVN服务器。我出城一周没有上网,因此无法访问SVN。

所以我试图弄清楚如何在我的笔记本电脑上随身携带存储库的快照,然后在我回来时将新版本合并回现有存储库...

  • 我的笔记本电脑运行Windows 7,所以首先,我认为VisualSVN Server可能是我将在本地运行的服务器。

  • 我应该能够转储当前的存储库,然后将其加载到笔记本电脑上的新存储库中

  • 但我不确定的是,当我从城外回来时。我将在笔记本电脑上的SVN服务器上进行所有这些新修订。如何转储然后仅将这些新修订版加载到我的linux服务器上的存储库中?

  • 如果我使用>svnadmin dump --revision 50:75(假设修订版50到75表示我在笔记本电脑上进行的新修订),我可以简单地将该转储文件加载到我的Linux服务器上的现有存储库中吗?这很容易吗?我知道有一些关于存储库UUID的东西可能会导致一些问题......

  • 还有一点需要注意,我是目前唯一为此SVN存储库做贡献的开发人员。因此,不需要代码合并。

更新

我不知道我只能使用file:///在本地访问存储库。所以这可能比运行 VisualSVN Server 更好。但是,主要问题仍然存在:如何将新版本从一个存储库获取到另一个存储库?

4 个答案:

答案 0 :(得分:2)

如果您是唯一的开发人员,也许您可​​以随身携带存储库。

在您离开时使用file:///协议访问它,然后在您返回时将其放回服务器上。 。

答案 1 :(得分:1)

从存储库中提取一组修订版本(nn到mm):

svnadmin dump --incremental -r nn:mm /path/to/repository > /path/to/dumpfile.svn

--incremental选项允许您合并这组更改,而不会将整个基线与导入一起使用。

将这些修订应用于存储库:

svnadmin load --ignore-uuid /path/to/repository < /path/to/dumpfile.svn

--ignore-uuid选项允许导入从源存储库中删除uuid信息。

我会将此操作限制为具有通用修订版本的存储库,否则加载可能会失败。

答案 2 :(得分:0)

我建议您在本地工作副本之上创建一个git或mercurial本地存储库。

您可以将.svn文件夹和工件添加到.hgignore或.gitignore文件中以保持存储库清洁,然后当您返回时,您可以执行svn提交更改,或者如果您想要为你在旅途中检查mercurial / git的每一个重要工作单元做一个阶段性的提交回到颠覆。

这两个repos都可以让你很容易将自己的本地工作副本保留在版本控制中,并轻松地同步到历史记录中定义的检入点。

答案 3 :(得分:0)

一种不复杂的方法是简单地检查你需要的一切,工作一些,玩一些,多做一些工作,享受周围环境,结识新朋友,多做一些工作,然后当你回来时,提交。一个星期似乎很长一段时间没有承诺,但当我离开时,特别是那些非互联网的地方,我往往不会像我想要的那样做很多工作。

如果您需要偶尔拍摄“保存游戏”快照,WinZip可以提供帮助。