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

Visual studio 如何创建远程svn存储库的本地副本?,visual-studio,svn,visualsvn,Visual Studio,Svn,Visualsvn,我有远程svn存储库。我想签出它(带有历史记录),然后在VisualStudio中用作常规存储库。过一会儿,我将从本地存储库提交(提交更改)到远程存储库(并更新文件,如果有的话) 所以我似乎只需要svn存储库的两个副本,并且我需要同步它们的能力 如何做到这一点?这与SVN是什么背道而驰。听起来你想要的是像Git或Mercurial这样的DVCS,所以很多开发人员都转向了类似的东西 我会使用git;并使用网桥与SVN服务器通信 从SVN克隆时,Git会保留存储库的完整副本(这意味着初始克隆可能需要

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

所以我似乎只需要svn存储库的两个副本,并且我需要同步它们的能力


如何做到这一点?

这与SVN是什么背道而驰。听起来你想要的是像Git或Mercurial这样的DVCS,所以很多开发人员都转向了类似的东西

我会使用git;并使用网桥与SVN服务器通信

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

我不知道单独使用SVN有什么干净的方法可以做到这一点。典型的工作流可能是:

git-svn克隆http://yoursvnserver/svn --用户名vcsjones
#做些改变
git添加-A
#阶段性的改变。添加-A阶段所有更改;
#您也可以使用独立的拨号文件,或者使用git add-i进行交互式添加
git commit-m“我的提交消息”
#重复进行更改并提交任意次数
git svn数据委员会
#将所有本地提交提交回SVN存储库。


如果你是一个人的商店;将您的存储库保存在USB闪存驱动器上(只要确保它以某种方式得到备份,以防丢失;它会出现故障)。

正如vsjones所回答的,您可以使用git svn签出Subversion存储库,将其用作本地git存储库,然后发布备份到它。您甚至可以使用来允许将Git与VisualStudio集成

然而,我想问你为什么要这样做。看起来你可能就是我们用CM的说法所说的爬进你的洞穴

爬进你的洞穴意味着你不再和其他人一起工作,而是要在没有任何监督的情况下私下工作。你想让你的代码绝对完美。你想要一部计算机代码的杰作。然后,您将向毫无戒心的世界展示它,这个世界将被您的编码技能所震惊。你会被称为天才,甚至有机会和一个女孩说话

当然,问题是编码总是在公众视野中运行得最好。代码审查不仅仅是为了完成代码。它也是在编写代码时使用的。在你走得太远之前

另一个问题是,开发人员往往贪得无厌。如果我需要像其他人一样在同一个主干上签入我的工作,我更可能接受更小的代码。(是的,我本可以用双关语来形容字节,但我是认真的)。我会做一些改变,可能会添加一些方法,测试并提交。然后,进行更多更改、测试和提交

我曾经是一名ClearCase管理员。在ClearCase中,每个开发人员都有自己的开发流。在流上编写代码,然后将工作合并到集成流中。(基本上,每个人都有自己的分支,您将更改合并到主干中)。作为我工作的一部分,我会让开发人员检查他们的更改。我运行了关于开发人员上次交付代码的报告。我经常要处理合并问题。我觉得自己像个巡逻警察

然后,我有一份每个人都使用简历的工作。在CVS中,分支是一种痛苦,因此每个人都在同一个分支上工作。我无法想象这是怎么回事。三十多个开发人员如何在同一个分支上工作?然而,随着时间的推移,我开始意识到,不仅每个人都可以在同一个分支上工作,而且问题也越来越少。我不再是警察了,我可以做我从来没有时间做的其他CM功能,而不是确保所有开发人员都遵守规则。我和开发者的关系改变了。我不再是那个过来告诉他们该怎么做的人了。相反,我是一个可以帮忙的人

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

这并不是说使用git svn没有合法的理由。我个人喜欢每隔几分钟签入一次代码。这使我能够恢复文件,因为它是五到十分钟前,我开始搞砸。我仍然会接受少量的检查,完成后我会签入代码。我将平均每天提交3到4次到我们的主存储库。我也使用svn git,但不是为了爬进我的洞穴,而是为了让我有一条生命之绳,可以用来把我从混乱的编码环境中拉出来


所以,看看git svn,但请不要以拥有自己的存储库为借口来躲避团队的其他成员。您可以使用(或[SVN provider from)。

正如其他答案所述,您不能有两个双向同步的SVN repo。对于SVN-SVN对,您只能构建单向同步RO SVN镜像

对于可以与central进行交换的本地回购,您必须使用DVCS
。使用直接SVN无法做到这一点,不使用辅助DVCS。如果您不想要Git,您可以将Mercurial与hgsubversion、Bazaar一起使用……但无论如何,这是额外的SCM

对于单独工作(如果您必须这样工作),最好在服务器上进行分支。只是不要忘记定期将主干合并到您的分支;这将帮助您避免“合并头痛”。

将SVN Repo克隆到其他SVN站点 有一种方法可以将SVN存储库克隆到具有全部或部分历史记录的其他SVN站点
clone-svn2svn.sh <source_svn_url> <destination_svn_url>