{"thread":{"id":"43126","subject":"Re: Getting CVS and Git to play nicely in the same box","startedAt":"2006-11-30T12:39:13Z","lastAt":"2006-11-30T22:21:18Z","messageCount":5,"participants":["Jakub Narebski","Alex Bennee","Robin Rosenberg"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"298292","messageId":"1164890354.21950.92.camel@okra.transitives.com","threadId":"43126","inReplyTo":null,"subject":"Getting CVS and Git to play nicely in the same box","fromName":"Alex Bennee","fromEmail":"kernel-hacker@bennee.com","sentAt":"2006-11-30T12:39:13Z","receivedAt":"2006-11-30T12:39:13Z","isPatch":false,"sender":{"key":"kernel-hacker@bennee.com","avatar":null},"body":"Hi,\n\nI'm trying to get a setup where I can use git for my day to day coding\non problems but still mirror a CVS repo. The situation is muddied\nslightly by the way we manage changes in our CVS repository and\nbaselines.\n\nThe CVS manner of working means we create a branch at a given point to\ndo work on it:\n\n          BL1_CH2\n         /\n        /\n       BL1_CH1\nBL1---/\n\nAnd then in the meantime a new baseline may be released:\n\n\nBL2    BL1_CH2\n|     /\n|     BL1_CH1\nBL1--/\n\nSo we employ the \"cvs -q update -dP -j BL1 -j BL2\" on our development branch\n          \n          BL2_CH2\n         /\nBL2     BL1_CH2\n|      /\n|    BL1_CH1\nBL1--/\n\nI want to mirror this sort of behaviour it git (basically making the \ncvs -j -j operation a git merge, separate from the normal development track). \nI however also need to maintain the CVS meta-data so when I get to given points\nI can commit my work into the main development server.\n\nI can set up a git repo that ignore all the CVS gubbins with exclude info but the\nCVS metadata gets in the way. I think I have to maintain two git repos, one that tracks the\nbaseline and one which is a clone (which can then pull updates) but has the CVS meta data\nfor my development branch. However CVS does seem to get very confused when the world moves\nunder it when you switch branches in GIT.\n\nHas anyone successfully set up such a working environment? Can anyone offer any tips on how to\nmake it all work nicely?\n\n-- \nAlex, homepage: http://www.bennee.com/~alex/\nTo iterate is human, to recurse, divine.\n"},{"id":"293884","messageId":"ekml1n$ask$1@sea.gmane.org","threadId":"43126","inReplyTo":"1164890354.21950.92.camel@okra.transitives.com","subject":"Re: Getting CVS and Git to play nicely in the same box","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-11-30T13:08:55Z","receivedAt":"2006-11-30T13:08:55Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Alex Bennee wrote:\n\n> Has anyone successfully set up such a working environment? Can anyone\n> offer any tips on how to make it all work nicely?\n\nWhy not use git-cvsserver? Or port git-svn to CVS (or use Tailor)?\n-- \nJakub Narebski\nWarsaw, Poland\nShadeHawk on #git\n\n"},{"id":"294143","messageId":"1164894847.21950.98.camel@okra.transitives.com","threadId":"43126","inReplyTo":"ekml1n$ask$1@sea.gmane.org","subject":"Re: Getting CVS and Git to play nicely in the same box","fromName":"Alex Bennee","fromEmail":"kernel-hacker@bennee.com","sentAt":"2006-11-30T13:54:07Z","receivedAt":"2006-11-30T13:54:07Z","isPatch":false,"sender":{"key":"kernel-hacker@bennee.com","avatar":null},"body":"On Thu, 2006-11-30 at 14:08 +0100, Jakub Narebski wrote:\n> Alex Bennee wrote:\n> \n> > Has anyone successfully set up such a working environment? Can anyone\n> > offer any tips on how to make it all work nicely?\n> \n> Why not use git-cvsserver? Or port git-svn to CVS (or use Tailor)?\n\nI can't use git-cvsserver because the main repository is going to have\nto stay on CVS for the time being. I don't think it could be used as a\ndrop in replacement for our existing server anyway as it doesn't support\ntagging or branching.\n\nUsing git is my own personal indulgence (At least until I can\ndemonstrate it's worth while the other migrating ;-).\n\nIt looks like git-svn  is the sort of tool I'd want for CVS although I'm\nnot sure how it would live with our CVS branched development model. I'll\nhave a poke around Tailor and see if that offers any help.\n\n-- \nAlex, homepage: http://www.bennee.com/~alex/\nNobody wants constructive criticism. It's all we can do to put up with\nconstructive praise.\n"},{"id":"293910","messageId":"200611301516.22382.jnareb@gmail.com","threadId":"43126","inReplyTo":"1164894847.21950.98.camel@okra.transitives.com","subject":"Re: Getting CVS and Git to play nicely in the same box","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2006-11-30T14:16:21Z","receivedAt":"2006-11-30T14:16:21Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Alex Bennee wrote:\n> On Thu, 2006-11-30 at 14:08 +0100, Jakub Narebski wrote:\n>> Alex Bennee wrote:\n>> \n>>> Has anyone successfully set up such a working environment? Can anyone\n>>> offer any tips on how to make it all work nicely?\n>> \n>> Why not use git-cvsserver? Or port git-svn to CVS (or use Tailor)?\n> \n> I can't use git-cvsserver because the main repository is going to have\n> to stay on CVS for the time being. I don't think it could be used as a\n> drop in replacement for our existing server anyway as it doesn't support\n> tagging or branching.\n> \n> Using git is my own personal indulgence (At least until I can\n> demonstrate it's worth while the other migrating ;-).\n\nPerhaps if not git-cvsserver, then git-cvsimport (or parsecvs, or cvs2git)\nand git-exportcommit would be what you want.\n\n> It looks like git-svn  is the sort of tool I'd want for CVS although I'm\n> not sure how it would live with our CVS branched development model. I'll\n> have a poke around Tailor and see if that offers any help.\n\nWell, Tailor used to work only with linear histories. But it is meant to\nmaintain parallel repositories in different formats.\n-- \nJakub Narebski\n"},{"id":"294815","messageId":"200611302321.19129.robin.rosenberg.lists@dewire.com","threadId":"43126","inReplyTo":"1164890354.21950.92.camel@okra.transitives.com","subject":"Re: Getting CVS and Git to play nicely in the same box","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2006-11-30T22:21:18Z","receivedAt":"2006-11-30T22:21:18Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"torsdag 30 november 2006 13:39 skrev Alex Bennee:\n> Hi,\n>\n> I'm trying to get a setup where I can use git for my day to day coding\n> on problems but still mirror a CVS repo. The situation is muddied\n> slightly by the way we manage changes in our CVS repository and\n> baselines.\n>\n> The CVS manner of working means we create a branch at a given point to\n> do work on it:\n>\n>           BL1_CH2\n>          /\n>         /\n>        BL1_CH1\n> BL1---/\n>\n> And then in the meantime a new baseline may be released:\n>\n>\n> BL2    BL1_CH2\n>\n> |     /\n> |     BL1_CH1\n>\n> BL1--/\n>\n> So we employ the \"cvs -q update -dP -j BL1 -j BL2\" on our development\n> branch\n>\n>           BL2_CH2\n>          /\n> BL2     BL1_CH2\n>\n> |      /\n> |    BL1_CH1\n>\n> BL1--/\n>\n> I want to mirror this sort of behaviour it git (basically making the\n> cvs -j -j operation a git merge, separate from the normal development\n> track). I however also need to maintain the CVS meta-data so when I get to\n> given points I can commit my work into the main development server.\n>\n> I can set up a git repo that ignore all the CVS gubbins with exclude info\n> but the CVS metadata gets in the way. I think I have to maintain two git\n> repos, one that tracks the baseline and one which is a clone (which can\n> then pull updates) but has the CVS meta data for my development branch.\nYou don't need to use GIT to track metadata (I asume you mean CVS/Entries) is \nnot necessary. Use a plain CVS checkout for that and cvsexportcommit to it.\n\n> However CVS does seem to get very confused when the world moves under it\n> when you switch branches in GIT.\nExaktly. Forget about it, it won't work and there is a simpler solution.\n\n> Has anyone successfully set up such a working environment? Can anyone offer\n> any tips on how to make it all work nicely?\n\nMy setup is like this:\n\n- A tracking repo on a server runs git-cvsimport every night.\n- I pull from the tracking repo\n- I have a CVS checkout for the branch I'm interested in committing to\n- Then I use cvsexportcommit to export changes back to CVS. Actuallly I use a \nsmall script that runs cvs update and then exports the changes defined by a \nnamed commit so I say \"tocvs a-commitid--tag-or-stgit-patch-name\".\n\nSince I use StGit I get no problem from my changes coming back through the \ncvsimport executed on the server. StGit makes the patches empty when my own \ncode returns from CVS.\n\n"}]}