暂时在本地机器上使用 SVN 离线工作
Posted
技术标签:
【中文标题】暂时在本地机器上使用 SVN 离线工作【英文标题】:Working offline with SVN on local machine temporary 【发布时间】:2011-06-23 11:34:29 【问题描述】:我正在从事一个目前在 SVN 上的项目。然而,我将有几天无法访问互联网,并将从事我的项目。
有什么方法可以在我的本地机器上克隆存储库,提交更改,当我访问互联网时将它们“推送”到共享存储库?考虑到这里的 Mercurial,是否值得完全迁移?!
【问题讨论】:
因为他想离线提交更改,而不是在最后完成一个大的更改集。 因为我提交了小的更改,因此需要在旅行时提交我的存储库......因此需要一个本地存储库(可能是克隆的)来提交。 【参考方案1】:你可以access svn repositories with mercurial。
【讨论】:
【参考方案2】:也总是有SVK。不过我已经很多年没有使用它了,所以我不确定它的效果如何。
【讨论】:
【参考方案3】:可笑的答案是迁移到另一个版本控制工具,没有冒犯!
我遇到了确切的问题。 一直在“真实”存储库所在的“真实”服务器上使用 SVN。 当我带着笔记本电脑外出时,没有互联网,我只需在这台笔记本电脑上复制“真实”存储库(VisualSVN + TortoiseSVN),对其进行处理,更改/提交任何内容,然后回来简单地“同步”新的“修订版”文件到“真实”存储库。
更清楚一点:有两台 SVN 服务器,一台在您的笔记本电脑本地(克隆),另一台在您的“真实”服务器上(显然)。只需在两者之间同步即可。
【讨论】:
这只有在任何时间点只有一个服务器接收到新的变更集时才有效。如果在您离线并向克隆提交更改的同时,有人将更改提交到原始存储库中的相同路径,则此方案会中断。 如何同步两个 svn 克隆?正如@Rudi 所说,如果其他人提交原始仓库怎么办? 我的方法假设你是唯一的提交者。否则它可能会按照 Rudi 的建议中断。 ...我通过复制文件来同步两个 svn 克隆。 这听起来像是危险的建议。您基本上(严重)在 Subversion 上重新实现了 DVCS。【参考方案4】:出于与您上面描述的相同原因,我一直在使用 SVN 的项目中使用 git。有些人习惯了 git/mercurial,但过了一段时间我真的很喜欢这种新方法。此外,我在使用 git-svn 时从未遇到任何问题,从未尝试过 mercurial 和 svn ..
如果您正在使用 Mercurial,并且仍在寻找一个很好的教程,中间会出现一两次轻笑,请查看 Joel Spolsky 撰写的 tutorial。如前所述,这无疑是开始使用 DVCS 的绝佳机会。
【讨论】:
【参考方案5】:在我看来,您的问题类似于git-svn
的用例:
git svn clone http://svn.example.com/project/trunk
在线时,将更改提交到 SVN
在离线之前,请执行git svn rebase
以使您的 Git 存储库与 SVN 存储库同步
在离线时,使用git commit
提交到 Git 存储库
当再次上线时,执行git svn dcommit
将您的更改推送回 SVN 存储库
我每天都在使用这个工作流程!
这样做有两个巨大的优势:
您的完整 SVN 历史记录已备份在 Git 存储库以及从该存储库克隆的每个 Git 存储库中 离线时,可以查看提交信息、签出其他分支等。【讨论】:
+1 是的,这正是git-svn
的用途。正是出于这个原因,我开始使用 git,并且效果很好。
如果我让 SVN 在本地签出副本怎么办。现在我无法访问服务器。现在我想要与上面相同的东西并创建一个新分支。有可能吗?【参考方案6】:
免责声明:我是 SOS(SVN 离线支持)的作者。
我编写了这个易于使用的命令行工具来解决离线使用 SVN 的问题,但它不仅适用于 SVN 结帐,而且适用于任何 VCS 工作副本(例如 Bazaar、Git、fossil),甚至在未跟踪的文件树中。 SOS 允许简单的提交、分支、切换/更新操作,而无需传统 VCS 所需的所有复杂语义背景知识。 重新上线后,您可以将所有更改集成回您的底层 VCS。
Website
安装需要 Python 3,并通过 pip install -U sos-vcs
处理
更新
虽然我仍然每天使用 SOS,但代码变成了无法维护的混乱,需要进行重大重写。这个想法仍然有效,可以作为类似项目的灵感。
【讨论】:
嗨,offline website
似乎是 offline
请告诉我们它是如何工作的/如何配置/在哪里获取它(你有任何 git public repo 吗?)跨度>
我将帖子中的链接更新到 Github 项目。以上是关于暂时在本地机器上使用 SVN 离线工作的主要内容,如果未能解决你的问题,请参考以下文章