我可以拥有同时作为 Git 和 SVN 工作区的工作区吗?

4
我现在已经从svn仓库中检出了本地工作副本,这是一个大型的Java项目,我使用Eclipse进行开发。当然,Eclipse会以自己的方式实时构建所有内容,并将所有二进制文件放在[项目根目录]/bin下。对于开发来说,这很好,但是当构建在构建服务器上运行时,它看起来非常不同(maven构建,二进制文件以不同的目录结构结束等)。
有时,我需要在我的本地开发系统上重新创建构建服务器环境以调试构建或其他事情,因此我通常会下载一个全新的工作副本到一个新的工作区,并从那里运行构建(防止我的开发工作区被所有构建工件弄得一团糟)。当然,有时我想在尚未提交的代码上运行完整的构建,所以我会手动将“开发”工作区覆盖到“构建”工作区。除了花费大量额外时间复制许多我实际上不需要的文件(只是将新的覆盖旧的),这还会破坏我的svn元数据,这意味着我无法从该“构建工作区”工作副本中检入更改,而且我经常不得不重新下载代码以使其回到已知状态。
所以我想把我的svn工作副本变成一个本地的git仓库,然后从svn工作副本/git主分支中“检出”正在开发的代码,放到本地的构建工作区。然后我就可以构建、还原我的更改,并在构建工作区中拥有版本控制工作副本的所有优势。如果需要对构建进行更改,则将这些更改推回到git主分支(也是svn工作副本),然后将其检入到主svn仓库中。
|-------------|
|main svn repo| <------- |---------------------|
|-------------|          |svn working copy     | <-------  |--------------------|
                         | (svn dev workspace/ |           | non-svn-versioned  |
                         |   git master)       |           | build workspace    |
                         |---------------------|           | (git working copy) |
                                                           |--------------------|

把所有东西都切换到git显然是更好的选择,但是由于大公司、太多人使用svn以及改变一切过于昂贵等原因,我们现在被迫使用svn作为主要仓库。

顺便说一下,我知道Eclipse有一个maven插件,但我主要想知道是否有一种方法来维护既是git工作副本又是svn工作副本的工作区。实际上,任何分布式版本控制系统可能都可以(即可能是hg)。建议?其他人如何处理这种既需要管理“开发”构建流程又需要管理“生产”构建流程的情况?

1个回答

1
克隆一个 git 存储库(svn 存储库的副本)到另一个 git 存储库的想法是可行的。
自 Git1.7.0 以来,如果您不想从第一个 Git 存储库中检出全部内容,您可以将此方法与 sparse checkout 相关联。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接