threads / discuss / 23930

cvs update vs. git pull

Subject: cvs update vs. git pull

## tl;dr

6 messages between May 28, 2010 and May 28, 2010.

replies: 5people: 6as markdown or json

René Moser· May 28, 2010, 09:21 UTC · lore
Hi
I use git since a while for my own projects (how surprise).

The company I work for still uses a CVS(nt), and this sucks, time to changed that. We have a use case we often have problems with. If git would solve this problem, I would really have a good arg for the managers.

The codebase managed by CVS is quite huge and therefore we have daily and nightly builds.

One problem we have is, that if there is a commit to cvs while the cvs update of the build job is running (and this takes 20 minutes), then we get some inconsistence, the build will fail.

So the question is, if we would use git, this inconsistence would not be possible because the git pull will get the state of the sha1. Right?

Thanks in advance for your clearification.

Regards René

Andreas Ericsson· May 28, 2010, 09:35 UTC · re: René Moser · lore

Re: cvs update vs. git pull

On 05/28/2010 11:21 AM, René Moser wrote:
Show 18 quoted lines
> Hi
> 
> I use git since a while for my own projects (how surprise).
> 
> The company I work for still uses a CVS(nt), and this sucks, time to
> changed that. We have a use case we often have problems with. If git would
> solve this problem, I would really have a good arg for the managers.
> 
> The codebase managed by CVS is quite huge and therefore we have daily and
> nightly builds.
> 
> One problem we have is, that if there is a commit to cvs while the cvs
> update of the build job is running (and this takes 20 minutes), then we
> get some inconsistence, the build will fail.
> 
> So the question is, if we would use git, this inconsistence would not be
> possible because the git pull will get the state of the sha1. Right?
> 
Right.
-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
Tor Arntsen· May 28, 2010, 09:46 UTC · re: René Moser · lore

Re: cvs update vs. git pull

On Fri, May 28, 2010 at 11:21, René Moser <mail@renemoser.net> wrote:
Show 10 quoted lines
> Hi
>
> I use git since a while for my own projects (how surprise).
>
> The company I work for still uses a CVS(nt), and this sucks, time to
> changed that. We have a use case we often have problems with. If git would
> solve this problem, I would really have a good arg for the managers.
>
> The codebase managed by CVS is quite huge and therefore we have daily and
> nightly builds.
So do we, where I work.
> One problem we have is, that if there is a commit to cvs while the cvs
> update of the build job is running (and this takes 20 minutes), then we
> get some inconsistence, the build will fail.

Yes. That's how it works with CVS. We try to work around that problem by using automatic tags ('nightly'-something) set individually on each module, common for the whole repo, and then we 'cvs export' by tag instead of cvs update. This works reasonably well (and is reproducible due to the tag), but is not anywhere as fast as git would be.

> So the question is, if we would use git, this inconsistence would not be
> possible because the git pull will get the state of the sha1. Right?

Git commits are atomic, so you won't see that inconsistency problem with git. So, Right.

-Tor
Matthieu Moy· May 28, 2010, 09:54 UTC · re: René Moser · lore

Re: cvs update vs. git pull

René Moser <mail@renemoser.net> writes:
> One problem we have is, that if there is a commit to cvs while the cvs
> update of the build job is running (and this takes 20 minutes), then we
> get some inconsistence, the build will fail.

Git will also bring a big performance improvement here. The duration of the "git pull" will be mostly O(number of modifications since last pull), not O(total number of files).

> So the question is, if we would use git, this inconsistence would not be
> possible because the git pull will get the state of the sha1. Right?

Actually, if you use almost anything but CVS (i.e. even SVN can do that), you will get "atomic commits", i.e. a commit touching multiple files is either seen as completed or not seen at all.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Ævar Arnfjörð Bjarmason· May 28, 2010, 13:07 UTC · re: Matthieu Moy · lore

Re: cvs update vs. git pull

On Fri, May 28, 2010 at 09:54, Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> wrote:

Show 9 quoted lines
> René Moser <mail@renemoser.net> writes:
>
>> One problem we have is, that if there is a commit to cvs while the cvs
>> update of the build job is running (and this takes 20 minutes), then we
>> get some inconsistence, the build will fail.
>
> Git will also bring a big performance improvement here. The duration
> of the "git pull" will be mostly O(number of modifications since last
> pull), not O(total number of files).

A while back I tried converting a huge (~40k directories) CVS repository to SVN and Git. Both CVS and SVN took around 10 minutes to cvs/svn up. git clone took around 8 minutes but each pull was around 5-15 seconds (I/O and network bound).

They eventually picked Bazaar for non-technical reasons. But yeah, Git's much faster to upgrade than CVS/SVN.

Robin Rosenberg· May 28, 2010, 15:58 UTC · re: René Moser · lore

Re: cvs update vs. git pull

fredagen den 28 maj 2010 11.21.12 skrev  René Moser:
Show 14 quoted lines
> Hi
> 
> I use git since a while for my own projects (how surprise).
> 
> The company I work for still uses a CVS(nt), and this sucks, time to
> changed that. We have a use case we often have problems with. If git would
> solve this problem, I would really have a good arg for the managers.
> 
> The codebase managed by CVS is quite huge and therefore we have daily and
> nightly builds.
> 
> One problem we have is, that if there is a commit to cvs while the cvs
> update of the build job is running (and this takes 20 minutes), then we
> get some inconsistence, the build will fail.

Perform export/checkout using a timestamp to avoid this. You should also require that no checkins to your branch have happend during a period, say 10 minutes, before starting the build.

> So the question is, if we would use git, this inconsistence would not be
> possible because the git pull will get the state of the sha1. Right?

Yes. It's hard to predict what happens when you have multiple repos involved, in the build. Requiring no changes (on the build branch) in all repos is one option.

-- robin

← back to recent threads