DVCS vs. Subversion brittleness (was Re: Moving to D)
Jean Crystof
a at a.a
Fri Feb 11 05:14:30 PST 2011
Bruno Medeiros Wrote:
> On 09/02/2011 23:02, Ulrik Mikaelsson wrote:
> > 2011/2/9 Bruno Medeiros<brunodomedeiros+spam at com.gmail>:
> >>
> >> It's unlikely you will see converted repositories with a lot of changing
> >> blob data. DVCS, at the least in the way they work currently, simply kill
> >> this workflow/organization-pattern.
> >> I very much suspect this issue will become more important as time goes on -
> >> a lot of people are still new to DVCS and they still don't realize the full
> >> implications of that architecture with regards to repo size. Any file you
> >> commit will add to the repository size *FOREVER*. I'm pretty sure we haven't
> >> heard the last word on the VCS battle, in that in a few years time people
> >> are *again* talking about and switching to another VCS :( . Mark these
> >> words. (The only way this is not going to happen is if Git or Mercurial are
> >> able to address this issue in a satisfactory way, which I'm not sure is
> >> possible or easy)
> >>
> >
> > You don't happen to know about any projects of this kind in any other
> > VCS that can be practically tested, do you?
> >
>
> You mean a project like that, hosted in Subversion or CVS (so that you
> can convert it to Git/Mercurial and see how it is in terms of repo size)?
> I don't know any of the top of my head, except the one in my job, but
> naturally it is commercial and closed-source so I can't share it.
> I'm cloning the Mozilla Firefox repo right now, I'm curious how big it
> is. ( https://developer.mozilla.org/en/Mozilla_Source_Code_%28Mercurial%29)
>
> But other than that, what exactly do you want to test? There is no
> specific thing to test, if you add a binary file (from a format that is
> already compressed, like zip, jar, jpg, etc.) of size X, you will
> increase the repo size by X bytes forever. There is no other way around
> it. (Unless on Git you rewrite the history on the repo, which doubtfully
> will ever be allowed on central repositories)
One thing we've done at work with game asset files is we put them in a separate repository and to conserve space we use a cleaned branch as a base for work repository. The "graph" below shows how it works
initial state -> alpha1 -> alpha2 -> beta1 -> internal rev X -> internal rev X+1 -> internal rev X+2 -> ... -> internal rev X+n -> beta2
Now we have a new beta2. What happens next is we take a snapshot copy of the state of beta2, go back to beta1, create a new branch and "paste" the snapshot there. Now we move the old working branch with internal revisions to someplace safe and start using this as a base. And the work continues with this:
initial state -> alpha1 -> alpha2 -> beta1 -> beta2 > internal rev X+n+1 -> ...
The repository size won't become a problem with text / source code.
Since you're a SVN advocate, please explain how well it works with 2500 GB of asset files?
More information about the Digitalmars-d
mailing list