我已经签出了一份代码库的本地工作副本,它存在于一个svn回购库中。这是一个很大的Java项目,我使用Eclipse进行开发.Eclipse当然会按照自己的方式构建一切,所有的二进制文件以[project root]/bin结尾。对我来说,这对开发来说非常好,但是当构建在构建服务器上运行时,它看起来有很大的不同(maven构建,二进制文件以不同的目录结构等)。我可以有一个既是git工作区也是svn工作区的工作区?
有时我需要在本地开发系统上重新创建构建服务器环境,以调试构建或你有什么,所以我通常最终将一个全新的工作副本下载到一个新的工作区并从那里运行构建(阻止让我的开发工作空间与所有构建工件混淆在一起,并弄脏工作副本)。当然,有时候我有兴趣运行完整的代码构建,但我不想检查代码,因此我将手动将“开发”工作区复制到“构建”工作区。除了花费大量额外的时间来复制大量我实际上不需要的文件(仅仅覆盖旧的文件)之外,这也会导致我的svn元数据无法使用,这意味着我无法检查“构建工作区“的工作副本,而且我最终不得不重新下载代码以使其恢复到已知状态。
所以我想我让我的svn工作拷贝一个本地git仓库,然后从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工作副本的工作区。实际上任何分布式版本控制系统都可能工作(可能是?)。建议吗?其他人如何处理这种不得不同时管理“开发”构建过程和“生产”构建过程的情况?