我已经检查了一个外部 svn 存储库,我已经应用了几个补丁。
(由于冲突,只能手动应用补丁。)
现在我希望能够以适当的方式维护远程存储库的本地副本。
(除了在远程存储库上读取之外,我没有任何其他访问权限。)
首先,我需要能够在某种源代码控制系统中签入我的本地更改,因为在应用补丁时涉及手动步骤。
其次,我仍然希望能够从远程存储库接收更新。
实现这一目标的最佳方法是什么?
我已经检查了一个外部 svn 存储库,我已经应用了几个补丁。
(由于冲突,只能手动应用补丁。)
现在我希望能够以适当的方式维护远程存储库的本地副本。
(除了在远程存储库上读取之外,我没有任何其他访问权限。)
首先,我需要能够在某种源代码控制系统中签入我的本地更改,因为在应用补丁时涉及手动步骤。
其次,我仍然希望能够从远程存储库接收更新。
实现这一目标的最佳方法是什么?
我想我可以为我的本地副本使用与 svn 不同的源代码控制系统?
例如,将我的完整本地副本(包括 .svn 文件夹)检入到 cvs 中。
或者我也可以使用git-svn但我不确定这是否是最好的解决方案。
有更好的建议吗?
更新:是的,git-svn似乎是首选的解决方案。
但是为了记录,也可以将hg 与 svn 一起使用。
执行此操作的传统方法是获取代码的导出版本并将其签入您自己的存储库。如果代码有更新,您可以将它们合并到您的存储库中。您可以通过巧妙的分支(查找供应商分支)来帮助合并。根据您签入的导出代码的版本标记您的仓库中的代码。
使用 svnsync 您可以保留 svn 存储库的副本,但是从您修改本地副本的那一刻起,您将无法继续同步。
我建议在最后的日常工作中使用 git。保留 svn 存储库的本地工作副本并将其置于 git 控制之下。那将是 git master。将该存储库克隆到不同的位置,分支 master 并在那里工作,将您的补丁直接应用到分支。
定期更新您的 svn wc 并将其拉入您的 git 存储库,作为 master。然后,将 master 与您的分支合并。
令人困惑的是,您将拥有“两个 git 用户”,一个是本地 svn repo 工作副本,另一个是您修补的分支。