如何创建远程svn存储库的本地副本?

jav*_*red 10 svn visualsvn visual-studio

我有远程svn存储库.我想签出它(带历史记录),然后在Visual Studio中用作常规存储库.过了一会儿,我将从本地存储库提交(提交更改)到远程存储库(如果有的话,还会更新文件).

所以我似乎只需要两个svn存储库副本,我需要能够同步它们.

怎么做?

vcs*_*nes 20

这违背了SVN的意思.听起来你想要的是像Git或Mercurial这样的DVCS,因此为什么许多开发人员已经转向类似的东西.

我会用git; 并使用git-svn网桥能够与SVN服务器进行通信.

当您从SVN克隆时,Git会保留存储库的完整副本(这意味着初始克隆可能需要长时间,因为它需要检出每个修订版本).然后,您将在本地提交到您的Git存储库; 并推送(推送)回SVN存储库.

我不知道有什么干净的方法可以单独使用SVN.典型的工作流程可能是:

git svn clone http://yoursvnserver/svn --username vcsjones

#make some changes
git add -A
#stage your changes. add -A stages all changes;
#you can stage individial files too or use git add -i for interactive adding
git commit -m "My commit messages"

#repeat makes changes and commit as many times as you want
git svn dcommit
#commit all local commits back to the SVN repository.
Run Code Online (Sandbox Code Playgroud)

如果你是一个男人的商店; 将您的存储库保存在USB闪存驱动器上(并确保它以某种方式备份,以免丢失它;它变得有问题).


Laz*_*ger 7

正如其他答案所述,您不能拥有2个具有双向同步的SVN仓库.对于SVN-SVN对,只能构建单向同步RO SVN镜像.

对于可与中央交换的本地仓库,您必须使用DVCS.使用直接SVN无法使用辅助DVCS.如果你不想要Git,你可以使用Mercurial和hgsubversion,Bazaar ......但无论如何它是额外的SCM.

对于单独工作(如果你真的必须以这种方式工作),最好在服务器上进行分支.只是不要忘记定期将trunk连接到你的分支; 这将有助于避免"合并头痛".


Dav*_* W. 5

正如vsjones所回答的,您可以使用git-svn签出Subversion存储库,将其用作本地Git存储库,然后回发到它.您甚至可以使用Microsoft Git源代码控制提供程序来集成Git和VisualStudio.

但是,我想问你为什么要这样做.看起来你可能是我们用CM的说法叫做 Crawling into Your Cave.

爬进你的洞穴意味着不会与其他人一起工作,而是在没有任何疏忽的情况下私​​下开展你的工作.你想让你的代码绝对完美.你想要一个计算机代码的杰作.然后,你将把它展示给那些将被你的编码技巧所震撼的毫无疑问的世界.你会被称为天才,甚至可能有机会与女孩交谈.

当然,问题是编码总是在公共视图中最佳.代码审查不仅适用于已完成的代码.它也适用于编写代码时的代码.在你走得太远的盲道之前.

另一个问题是开发商倾向于咀嚼超过他们可以咀嚼的东西.如果我需要在与其他人相同的主干上检查我的工作,我更有可能采取更小的代码.(是的,我可以在字节上做出双关语,但我正在努力做到认真).我会做一个改变,也许添加一些方法,测试和提交.然后,做更多的更改,测试和提交.

我曾经是ClearCase的管理员.在ClearCase中,每个开发人员都有自己的开发流.您在流上编码,然后将您的工作合并到集成流中.(基本上,每个人都有自己的分支,并将您的更改合并到主干).作为我工作的一部分,我会惹恼开发人员检查他们的更改.我查看了上次开发人员交付代码时的报告.我经常不得不处理合并问题.我觉得自己像个警察一样.

然后,我找到了一个每个人都使用CVS的工作.在CVS中,分支是一种痛苦,所以每个人都在同一个分支上工作.我无法想象这会如何运作.三十几个开发人员如何在同一个分支上工作?然而,随着时间的推移,我开始意识到,不仅每个人都可以在同一个分支机构工作,而且问题更少.我不再是被击败的警察,而不是确保所有开发人员遵守规则,我可以做其他我从未有时间做的CM功能.我与开发者的关系发生了变化.我不再是那个来到这里并告诉他们该怎么做的人.相反,我是一个可以提供帮助的人.

因此,请小心在您自己的私有存储库中完成工作,然后将完成的产品交付给您的团队.如果您正在进行需要长期开发的主要工作,这可能会在您执行操作时破坏构建,请在Subversion中请求您自己的功能分支.这样,每个人都会看到你正在做的事情.

这并不是说使用git svn没有正当理由.我个人喜欢每隔几分钟检查我的代码.这使我能够在我开始弄乱之前五或十分钟恢复文件.我还是小咬一口,当我完成时我会检查我的代码.我平均每天会向我们的主存储库提交大约3到4次提交.我也使用svn git,但不是这样,我可以爬进我的洞穴,但所以我有一条生命绳,我可以用来把我拉出凌乱的编码情况.

所以,看看git svn,但是请不要使用你自己的存储库来隐藏你的其他组的借口.您可以使用MS Git Provider(或AnkhSVN的[SVN提供商).