Visual Studio 如何创建远程svn仓库本地副本?

bxjv4tth  于 2023-08-07  发布在  其他
关注(0)|答案(5)|浏览(110)

我有远程svn仓库.我想 checkout 它(与历史),然后在Visual Studio中使用作为常规存储库。过一段时间后,我将从本地存储库提交(提交更改)到远程存储库(如果有的话,也会更新文件)。
所以看起来我只需要两个svn仓库的副本,我需要同步它们的能力.
怎么办?

but5z9lq

but5z9lq1#

这与SVN的本质相悖。听起来你想要的是像Git或Mercurial这样的DVCS,这就是为什么许多开发人员已经转向这样的东西。
我会使用git;并使用git-svn网桥与SVN服务器进行通信。
当你从SVN克隆时,Git会保留一个仓库的完整副本(这意味着初始克隆可能需要很长时间,因为它需要 checkout 每个版本号)。然后在本地提交到Git仓库;并将dcommit(push)返回到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.

字符串
如果你是一个人的商店;把你的仓库保存在一个U盘上(只要确保它有备份,以防丢失;它变得有缺陷)。

lnxxn5zx

lnxxn5zx2#

正如其他答案所述,你不能有2个双向同步的SVN仓库。SVN-SVN对只能构建单向同步RO SVN-mirror
对于可以与中心交换的本地存储库,您必须使用DVCS。如果不使用辅助DVCS,则无法直接使用SVN。如果你不想要Git,你可以使用Mercurial和hgsubversion,Bazaar...但无论如何,这是额外的SCM。
对于solo-work(如果你真的必须这样做),最好在服务器上分支。只是不要忘记定期合并 Backbone.js 到分支;这将帮助您避免“合并头痛”。

iqih9akk

iqih9akk3#

正如vsjones所回答的,你可以使用git-svn checkout Subversion仓库,将其作为本地Git仓库使用,然后回发到它.您甚至可以使用Microsoft Git Source Control Provider来允许您将Git与VisualStudio集成。
”我想知道你为什么要这样做。看起来你可能是我们CM所说的 * 爬进你的洞穴 *。
“爬进你的洞穴”意味着你不需要和其他人一起工作,而是在没有任何监督的情况下私下完成你的工作。你想让你的代码绝对完美。你想要一个计算机代码的杰作。然后,你将向毫无戒心的世界揭开它的面纱,你的编码技能将使他们惊叹不已。你会被称赞为天才,甚至有机会和一个女孩说话。
当然,问题是,当它在公众视野中时,编码总是最好的。代码审查不仅仅是针对已完成的代码。它也适用于正在编写的代码。在你走得太远之前。
另一个问题是开发人员倾向于贪多嚼不烂。如果我需要和其他人一样在同一个 Backbone.js 上签入我的工作,我更有可能使用更小的代码。(是的,我可以在 bytes 上做一个双关语,但我想认真一点)。我会做一些改变,也许会添加一些方法,测试和提交。然后,做更多的更改,测试和提交。
我曾经是一名ClearCase管理员。在ClearCase中,每个开发人员都有自己的开发流程。您在流上编码,然后将工作合并到集成流中。(基本上,每个人都有自己的分支,你把你的更改合并到 Backbone.js 中)。作为我工作的一部分,我会麻烦开发人员检查他们的更改。我运行了一份报告,查看开发人员最后一次交付代码的时间。我经常不得不处理合并问题。我觉得自己像个警察。
然后,我有一份工作,每个人都使用CVS。在CVS中,分支是一件痛苦的事情,所以每个人都在同一个分支上工作。我无法想象这是怎么回事。30多个开发人员如何在同一个分支上工作?然而,随着时间的推移,我开始意识到,不仅每个人都可以在同一个分支上工作,而且问题也更少。我不再是一个负责巡逻的警察,我可以做其他我从来没有时间做的CM功能,而不是确保所有的开发人员都遵守规则。我和开发商的关系发生了变化。我不再是那个过来告诉他们该怎么做的人了。相反,我是一个能帮上忙的人。
因此,在您自己的私有存储库中完成工作,然后将完成的产品交付给您的团队时要小心。如果你正在做的主要工作需要长期的开发,可能会在你做的时候 * 破坏构建 *,在Subversion中要求你自己的特性分支.那样的话,所有人都会知道你在干什么
这并不是说使用git svn没有合理的理由。我个人喜欢每隔几分钟检查一次代码。这使我能够恢复一个文件,因为它是五或十分钟前,我开始制造混乱。我仍然会小口小口地吃,吃完后会检入代码。我平均每天向我们的主仓库提交3到4次。我也使用svn git,但不是为了爬进我的洞穴,而是为了有一根救生绳,可以把我从混乱的编码环境中拉出来.
所以,看看git svn,但是请不要用你有自己的仓库的借口来躲避你的团队。您可以使用MS Git Provider(或AnkhSVN的[SVN提供程序)。

8yoxcaq7

8yoxcaq74#

将SVN Repo克隆到其他SVN站点

有一种方法可以将SVN仓库克隆到具有全部或部分历史的不同SVN站点。这就像在bash中运行下面的命令一样简单。

clone-svn2svn.sh <source_svn_url> <destination_svn_url>

字符串
我花了相当长的时间来实现这一目标,并编写了一个脚本,以便为其他人自动化和记录。脚本在后台使用git,但它将git从用户中抽象出来(当然,除非出现错误)。
GitHub:clone-svn2svn

更新SVN仓库

还有关于如何在克隆后从源更新存储库的说明。你可以在GitHub page上找到它们。不幸的是,我没有为此编写脚本,你需要亲自动手使用git命令行。它也可以自动化。

gtlvzcf8

gtlvzcf85#

通过创建最新存储库修订版的本地副本

svn checkout svn://host/repos/test folder

字符串
如果您需要整个历史记录,则需要使用svnsyncgit svn(后者已在上文中描述)等工具克隆完整的服务器存储库。
如果您使用svnsync创建一个repo副本,请不要混淆克隆的repo不包含您提交的文件。这是因为SVN服务器将文件以FSFS格式保存在db/revs/文件夹中。您将能够通过通常的svn checkout file:///path-to/SVNRepository/ folder方式检索文件。

相关问题