在客户网站(有几个人)工作的最佳方法是什么?在整个时间内可能无法访问互联网并使用subversion存储库?
(目前无法迁移到Git或Mercurial)
但是不可能利用诸如Git SVN Integration之类的东西来创建一个代理,它就像客户端的subversion存储库一样,最终可以用来将更改同步回subversion吗?是否已有可用的东西?
答案 0 :(得分:3)
我认为svk可能会提供您想要的内容。
答案 1 :(得分:2)
实际上,Git中有一个名为git-svn的工具。您可以在这里找到更多信息: http://git-scm.com/docs/git-svn
您使用git作为主VCS,而不是与SVN存储库同步。
答案 2 :(得分:1)
还没有足够的回复评论,但我想指出svk正式“死”;该项目不再由之前的维护者进行改进,而维护者几乎就是一个人。从本质上讲,该项目的维护者说:“svk很酷,但现在每个人都知道你应该使用分布式工具,因此不值得维护。”
官方的“生命终结”风格的博客文章可以在Best Practical的网站上找到,关于这个主题的blog post。
那就是说,svk可能仍然是正确的工具。即使存在git-svnserver,也无法使用SVN客户端远程进行多次提交。但是,学习SVK实际上并不是 与学习git不同。最后,我认为git-svn可能是你想要的工具,因为你的用例 - 使用SVN客户端提交多个更改然后推送到服务器 - 是不可能的。后端可以保留SVN或者你有什么,但是你将不得不学习一些不同的客户端,而git可能是正确的。
答案 3 :(得分:0)
您可以使用SVK这是一组基于Subversion构建的Perl脚本,它提供了类似DVCS的功能。我之前使用过SVK,但只是以一种非常简单的方式。我知道它可以进行这种离线代理操作。
答案 4 :(得分:0)
您可以使用Git或Bazaar从Subversion结账(我猜Mercur也),转到客户站点并离线工作,根据需要进行尽可能多的“本地提交”,当您再次连接时,您有多种选择将这些更改恢复到Subversion。我们快点回顾一下。
使用Git(git-svn)或Bazaar(bzr-svn)从Subversion结帐:
# using Git
git svn clone SVN_REPO_URL
# using Bazaar
bzr branch SVN_REPO_URL
这些并不总是完美的,特别是如果Subversion存储库很大的话。语法可能与Mercurial类似。尝试你喜欢的工具,如果它不起作用,请尝试另一种工具。
请记住,克隆/分支步骤可能需要很长时间,因为这些工具会获取整个存储库,而不仅仅是像Subversion这样的最新版本。
在客户现场工作(或断开连接,或在咖啡店工作),并根据需要提交更改。您不需要网络连接,因为这些是分布式VCS工具,整个存储库存在于本地,您的提交将位于此本地存储库中。
请注意,除了能够在本地提交之外,您还可以执行所有其他存储库操作,例如浏览历史记录,因为所有内容都在本地存储库中。
当然,您需要熟悉Git / Bazaar才能使用它。
将您的本地更改重新置于Subversion中。主要有两种方式:变基和合并。重新定位意味着将您的本地更改倒回到结账点,快速转发您错过的Subversion存储库中的更改,然后重播您的更改,然后将这些更改推送到Subversion。
使用Git:
git svn rebase
git svn dcommit
使用Bazaar:
bzr rebase
bzr push :parent
这是对工具的高级使用。首先,如果您选择使用Git,git-svn
和bzr-svn
,则必须安装其他插件(bzr-rewrite
(尽管这些包含在Windows的默认安装中)和Mac OS X),你需要有这些工具的工作知识才能有效地使用它们。