[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: external file

From: David Weintraub <qazwart_at_gmail.com>
Date: Thu, 2 Dec 2010 10:23:17 -0500

On Thu, Dec 2, 2010 at 5:30 AM, Scott Yan <scottyan_at_live.com> wrote:
>   Below is our situation:
>   There are a dozen sub-factories in our company , and we develop our ERP
> system ourselves, because there are very much diffrences between factories,
> our project became a dozen versions, which means we have a dozen repositoies
> for all the projects.

One of the biggest complaints I have with VSS (besides its ability to
render your entire source repository an unreadable mush of bits at
random times) was the "shared" files concept. As a CM, this is a
disastrous idea because it makes it almost impossible to understand a
project and its dependencies. You end up with a spiderweb of
dependencies that are almost impossible to trace. Not only that, but
the way VSS "shared" those files makes it impossible to say that a
particular file belongs to this or that project.

Imagine if a shared file is changed in another project, and it causes
a bug in your project. Who's problem is it? Which project actually
owns that file? You can unshare that file, but you lose what were
suppose to be the benefits of the share in the first place.

Subversion's idea of sharing directory trees, but not individual files
goes a long way in clearing this up because it forces you to think of
your subcomponents as a single unit and not a mash of files you can
pick and choose from.

That means if I share subcomponent "B", I have to define exactly what
"B" does and doesn't do. If "B" is suppose to manipulate data
structures in my project, it has to do so in an independent way.
Project "B" doesn't know what my SQL tables look like, or where my
pointers point.

That helps isolate errors. If I find a bug in my program, and I trace
that to subcomponent "B", I can say whether the error is with in "B"
or within my own project because I can look at the definition of what
"B" is suppose to do and say whether it matches that definition. If
the bug is truly with subcomponent "B", I know that bug is possibly
affecting other projects too, and that fixing that bug in "B" might
fix it in other projects. If I need to tweak "B" to get it to work,
and that might break its use in other projects, we can branch
subcomponent "B", or simply say that the other projects depend upon an
earlier version of "B" than my project.

The best thing to do is to start separating out the tenuous web of
dependencies your projects have with each other, and to clarify
exactly what each subcomponent will do. It might take months to clean
everything up, but it has to be done.

I'm thinking of starting an organization based upon Alcoholics
Anonymous for former users of VSS. ("Hello, my name is David, and I
used Visual Source Safe.") The concept is similar: The use of
Alcohol/VSS has made a complete mess of your life/project, Because of
your use of Alcohol/VSS, you've lost great friends/ highly regarded
co-workers, and it will take years to recover and get your
life/project back on track.

There will be times when everything looks hopeless and you fall into a
deep abyss of depression and you think whether or not abandoning
Alcohol/VSS is worth it. But, you take it one day at a time. You turn
to a higher authority (God/ISO 9000) to guide you.

-- 
David Weintraub
qazwart_at_gmail.com
Received on 2010-12-02 16:23:53 CET

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.