There’s a curve for me in CVS, and it’s of the learning type.
See, I’ve been using MS Source Safe for years. Long enough for me not to remember how odd it was for my brain to wrap around its (it how seems) real simple concepts.
Now it’s CVS’s turn to do this to me.
Never mind that I had trouble getting it working. Never mind that I’m still not sure if I want to run its authentication as ssh or as pserver.
I got it working, I made it work with my IDE of choice (Eclipse!) and now I’m struggling to understand.
Gone are the well understood concepts of “checking in” and “checking out”. Maybe it’s Eclipse’s fault? I’ve got update, commit, synchronize, branch, merge, tag as version, apply patch, create patch, etc.
Most of these I get. I read these and they all make sense.
But in practice, I haven’t had that luck.
I succeeded (I think) in properly creating projects in my CVS database and sending my code. All fine.
Other people on my projects are still using SourceSafe (until I can teach’em how to use CVS efficiently – I don’t want to lose productivity!). So as I uploaded a project on my pristine new CVS gig, I heard a new update was ready in SS (that’s for Source Safe.)
So I “Get latest version”ed the project from SS (I don’t know which files got updated), planning to send the updated stuff back to the CVS server. That’s when I started not getting what was going on.
In SS, I know how to check out files without actually getting the file from the server. Idea was to check out my files from CVS, don’t get the code, check in everything (hopefully only what had truly changed). That was the plan.
And I also wanted to test integration within Eclipse. So I went to one of the file I knew had been modified, but not “checked out” and typed. As expected, Eclipse checked out the file for me. What I didn’t expect was for it not to get the latest version from the server. Maybe it figured the date on my file was more recent than the servers’ ?
I could’ve just said screw it. Its doing what I want, let’s just “check in” (which should now be also known as “commit”, which also makes sense) the files and be done with it.
Due to my explorative nature and my wish to understand just what is going on, my objective now was : let’s get the version as it stands from CVS first. Let’s “check out” the whole CVS project, update it with SS and check it back it.
That’s what I never managed to do. “Update” didn’t do it (what does it do?). “Synchronize” wants me to merge the changes manually. No thank you.
I was pressed for time, so I went to just committing any changes CVS could find. Worked. But I’m not satsified with my gained knowledge.
Later, I’ll try to sync to a remote project from home and update my local copy.