How to guerilla VC with git while forced to use CVS at work?
My place of work currently uses CVS. A git migration is planned but it might be a long time coming. In the mean time I have a one-man project, and have decided to use git for my own personal development. The branching, staged commits, rebasing etc. has been fantastic! But unfortunately a开发者_如何学Ct some point this project, and its history, needs to be imported into CVS, so others can check my progress.
What's the best way to...
- import the current project (ideally as a set of separate commits/revisions) into CVS
- allow repeatable imports of future changes into CVS
- (bonus question - ideal but not required) merge any CVS changes by other developers back into git
Nothing is in CVS at the moment, if it matters. (And if I had my way nothing would ever be in CVS, but I'm stuck with it for now!) Thanks in advance!
While I have no explicit CVS knowledge I would suggest the following setup.
Work\Project.git
<-- git repoSync\Project
<-- git clone of master branch in..\Work\Project.git
+ CVS version control on this folder.
Than you can do all your git stuff in Project.git
and when you want to import into CVS, you go to Sync\Project
and do a git pull
to replay the changes in your sync dir (perhaps you need to do a full dir checkout in CVS?).
For the reverse scenario, you might need to work with import branch but I think it would be possible to get the changes from your colleages in the sync folder, but do that import in a new branch, and merge that with your master branch which you pulled from your main git repository. After this merge, you could git push
the changes back to your Work\Project.git
.
In essence, use your sync repository just as if you're another dev. You might even let the regular repository pull from your sync (so send a pull request to yourself ;-) ) or use the git send patch mechanism to update your main git repository.
Importing the CVS change set in git, there is a git-cvsimport which should help you with that.
git cvsimport
and git cvsexportcommit
can give you a workflow similar to git svn
精彩评论