我可以拥有既是git工作区又是svn工作区的工作区?

时间:2010-03-15 17:43:43

标签: eclipse svn git version-control build-process

我现在已经检查了一个存在于svn repo中的代码库的本地工作副本。这是一个我用Eclipse开发的大型Java项目。当然,Eclipse会以自己的方式构建所有内容,所有二进制文件最终都在 [project root] / bin 中。对于开发而言,这对我来说非常好,但是当构建在构建服务器上运行时,它看起来非常不同(maven构建,二进制文件最终在不同的目录结构中等)。

有时我需要在我的本地开发系统上重新构建构建服务器环境来调试构建或者你有什么,所以我通常最终将一个全新的工作副本下载到一个新工作区并从那里运行构建(防止混乱)我的开发工作区包含所有构建工件并弄脏了工作副本)。当然,有时候我对运行完全构建我不想检查的代码感兴趣,所以我将手动将“开发”工作区复制到“构建”工作区。除了花费大量的额外时间复制我实际上并不需要的大量文件(只是覆盖旧的文件),这也搞砸了我的svn元数据,这意味着我无法检查“build”中的更改工作区“工作副本,我经常最终不得不重新下载代码,以使其恢复到已知状态。

所以我想我的svn工作副本是本地git repo,然后“检查”svn working copy / git master中的开发代码到本地构建工作区。然后我可以构建,还原我的更改,在构建工作区中拥有版本控制的工作副本的所有优点。然后,如果我需要对构建进行更改,请将它们推回到git master(这也是一个svn工作副本),然后将它们检入主svn repo。

|-------------|
|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 个答案:

答案 0 :(得分:1)

将git repo(svn repo的副本)克隆到另一个git仓库中的想法可以工作。
自Git1.7.0起,如果您不想从第一个Git仓库中签出所有内容,则可以将此方法与 sparse checkout 相关联。