3

在可能无法始终访问互联网并使用颠覆存储库的客户站点(有几个人)工作的最佳方法是什么?

(迁移到 Git 或 Mercurial 目前是不可能的)

但是是否可以利用诸如 Git SVN 集成之类的东西来创建一个代理,该代理就像客户端的 subversion 存储库,并且可以在最后用于将更改同步回 subversion?是否已经有类似的东西可用?

4

5 回答 5

3

我认为svk可能会提供您正在寻找的东西。

于 2009-08-11T12:15:58.173 回答
2

实际上,Git 中有一个工具叫做 git-svn。你可以在这里找到更多信息:http: //git-scm.com/docs/git-svn

您使用 git 作为您的主要 VCS,然后与 SVN 存储库同步。

于 2009-08-11T12:21:23.107 回答
1

还没有足够的代表发表评论,但我想指出 svk 正式“死”了;该项目不再由以前的维护者改进,这几乎是一个人。本质上,该项目的维护者说:“svk 很酷,但现在每个人都知道你应该使用分布式工具,所以它不值得再维护了。”

可以在 Best Practical 网站上关于该主题的博客文章中找到官方的“生命终结”风格博客文章。

也就是说,svk 可能仍然是正确的工具。即使存在 git-svnserver,您也无法使用 SVN 客户端远程执行多个提交。然而,学习 SVK 与学习 git 并没有什么不同。最后,我认为 git-svn 可能是您想要的工具,因为您的用例——使用 SVN 客户端提交多个更改然后推送到服务器——是不可能的。后端可以保持 SVN 或你有什么,但你将不得不学习一些不同的客户端,而 git 可能是正确的。

于 2010-06-17T12:26:02.560 回答
0

您可以使用 Git 或 Bazaar(我猜也是 Mercurial)从 Subversion 结帐,转到客户站点并离线工作,根据需要进行尽可能多的“本地提交”,当您再次连接时,您有多种选择来获得这些变回颠覆。让我们快速回顾一下这些步骤。

  1. 使用 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 这样的最新版本。

  2. 在客户站点(或断开连接,或在咖啡店)工作,并根据需要提交更改。您不需要网络连接,因为这些是分布式 VCS 工具,整个存储库都存在于本地,您的提交将在此本地存储库中。

    请注意,除了能够在本地提交之外,您还可以执行所有其他存储库操作,例如浏览历史记录,因为一切都在本地存储库中。

    当然,您需要熟悉 Git/Bazaar 才能使用它。

  3. 将您的本地更改恢复到 Subversion。主要有两种方式:变基和合并。变基意味着将您的本地更改回退到结帐点,快速转发您错过的 Subversion 存储库中的更改,并在此基础上重放您的更改,然后将这些更改推送到 Subversion。

    使用 Git:

    git svn rebase
    git svn dcommit
    

    使用集市:

    bzr rebase
    bzr push :parent
    

这是对工具的一种高级使用。一方面,您必须安装额外的插件(git-svn如果您选择使用 Git,bzr-svn并且bzr-rewrite如果您选择使用 Bazaar(尽管这些插件包含在 Windows 和 Mac OS X 的默认安装中),并且您需要了解这些工具的工作知识有效地使用它们。

于 2013-03-16T14:27:36.977 回答
0

您也许可以使用SVK,它是一组基于 Subversion 构建的 Perl 脚本,提供一些类似 DVCS 的功能。我以前使用过 SVK,但只是以一种非常简单的方式。我知道它可以做这种离线代理操作。

于 2009-08-11T12:16:43.930 回答