You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Scott Yan <sc...@live.com> on 2010/12/02 10:30:46 UTC

external file

Hi, 
 
  At first, thanks for your great works, but our company really need inter-repository file-externals feature which is not supported now, so , is there any plan to do this? 
 
  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. 
 
  Obviously, there are many files are equal in these projects, we must share them between projects, but it's very difficult to share the whole directory because of many reason such as: 
  1. We use VSS before, and VSS support file share between projects, so we didn't place share files in seperate folder. 
  2. Usually, when we add a new module to the system , the whole module is shared in all the projects, but factories will ask some special functions for their own request, and there will be more and more files are diffrent from other projects. 
  3. there are several files are placed at root directory. 
  
  For clearer description, I'll demonstrate our situation:
  Suppose there are 3 projects
    Project1
    Project2
    Project3
 
  There is a "HRManagement" folder in all of them. 
  There are 100 files in HRManagement folder, 30 of them are equal between Project1, Project2 and Project3, but the others are not equal. 
 
  If we make a new folder names "Share" below HRManagement, and place the 30 files to it:
    HRManagement/Share/sharefile1
    HRManagement/Share/sharefile2
    HRManagement/Share/sharefile3
    ......
 
  Because we reference sharefile1 as "HRManagement/sharefile1" before, so we must search the whole project ( in face, in all the projects, Project1, Project2, and Project3) for the old reference , and then change to "HRManagement/Share/sharefile1".  
  And, this is just for a single file! There are sharefile2, sharefile3,......  to do the same work, which is impossile at all. 
 
  Thanks for reading this , and I really hope you will add the feature ...
 
 
Best Regards
Scott.Yan
 
  		 	   		  

Re: external file

Posted by Daniel Becroft <dj...@gmail.com>.
 On Sat, Dec 4, 2010 at 10:35 AM, Scott Yan <sc...@live.com> wrote:

>  Hi, djcbecroft:
>
>   Thanks very much for your reply , but I'm afraid that branches can't meet
> my request. Because when we make some change to any projects, we want the
> changes reflect to all other projects just as external does, but when I
> modify a file in a branch, other branches won't know that until I do a
> merge, so , that means if I modify a file in project1, I must goto project2
> to do a merge, and then project3, and then more, besides, we modify the
> files really frequently.
>

Please remember to Reply All to ensure the conversation stays on the list.

Maybe. You can use branches, and then use intra-repository file externals to
avoid merging the changes across.

Cheers,
Daniel B.

----
> Best Regards
> Scott.Yan
>
>
>
> > CC: users@subversion.apache.org
> > From: djcbecroft@gmail.com
> > Subject: Re: external file
> > Date: Thu, 2 Dec 2010 23:09:57 +1000
> > To: scottyan@live.com
>
> >
> > On 02/12/2010, at 20:30, Scott Yan <sc...@live.com> wrote:
> >
> > > Hi,
> > >
> > > At first, thanks for your great works, but our company really need
> inter-repository file-externals feature which is not supported now, so , is
> there any plan to do this?
> > >
> > > 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.
> >
> > This scenario sound like you should probably have one repository with
> separate branches per version, rather than individual repositories. Then you
> wouldn't need externals at all.
> >
> > > Obviously, there are many files are equal in these projects, we must
> share them between projects, but it's very difficult to share the whole
> directory because of many reason such as:
> > > 1. We use VSS before, and VSS support file share between projects, so
> we didn't place share files in seperate folder.
> > > 2. Usually, when we add a new module to the system , the whole module
> is shared in all the projects, but factories will ask some special functions
> for their own request, and there will be more and more files are diffrent
> from other projects.
> > > 3. there are several files are placed at root directory.
> > >
> > > For clearer description, I'll demonstrate our situation:
> > > Suppose there are 3 projects
> > > Project1
> > > Project2
> > > Project3
> > >
> > > There is a "HRManagement" folder in all of them.
> > > There are 100 files in HRManagement folder, 30 of them are equal
> between Project1, Project2 and Project3, but the others are not equal.
> > >
> > > If we make a new folder names "Share" below HRManagement, and place the
> 30 files to it:
> > > HRManagement/Share/sharefile1
> > > HRManagement/Share/sharefile2
> > > HRManagement/Share/sharefile3
> > > ......
> > >
> > > Because we reference sharefile1 as "HRManagement/sharefile1" before, so
> we must search the whole project ( in face, in all the projects, Project1,
> Project2, and Project3) for the old reference , and then change to
> "HRManagement/Share/sharefile1".
> > > And, this is just for a single file! There are sharefile2,
> sharefile3,...... to do the same work, which is impossile at all.
> >
> > And if one of these shared files needed to be changed for a single
> version, you would have to undo all that work. Again, branches sound like a
> better fit.
> >
> > > Thanks for reading this , and I really hope you will add the feature
> ...
> > >
> > >
> > > Best Regards
> > > Scott.Yan
> > >
> > >
>

Re: external file

Posted by Daniel Becroft <dj...@gmail.com>.
On 02/12/2010, at 20:30, Scott Yan <sc...@live.com> wrote:

> Hi, 
>  
>   At first, thanks for your great works, but our company really need inter-repository file-externals feature which is not supported now, so , is there any plan to do this? 
>  
>   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. 

This scenario sound like you should probably have one repository with separate branches per version, rather than individual repositories. Then you wouldn't need externals at all.

>   Obviously, there are many files are equal in these projects, we must share them between projects, but it's very difficult to share the whole directory because of many reason such as: 
>   1. We use VSS before, and VSS support file share between projects, so we didn't place share files in seperate folder. 
>   2. Usually, when we add a new module to the system , the whole module is shared in all the projects, but factories will ask some special functions for their own request, and there will be more and more files are diffrent from other projects. 
>   3. there are several files are placed at root directory. 
>   
>   For clearer description, I'll demonstrate our situation:
>   Suppose there are 3 projects
>     Project1
>     Project2
>     Project3
>  
>   There is a "HRManagement" folder in all of them. 
>   There are 100 files in HRManagement folder, 30 of them are equal between Project1, Project2 and Project3, but the others are not equal. 
>  
>   If we make a new folder names "Share" below HRManagement, and place the 30 files to it:
>     HRManagement/Share/sharefile1
>     HRManagement/Share/sharefile2
>     HRManagement/Share/sharefile3
>     ......
>  
>   Because we reference sharefile1 as "HRManagement/sharefile1" before, so we must search the whole project ( in face, in all the projects, Project1, Project2, and Project3) for the old reference , and then change to "HRManagement/Share/sharefile1".  
>   And, this is just for a single file! There are sharefile2, sharefile3,......  to do the same work, which is impossile at all. 

And if one of these shared files needed to be changed for a single version, you would have to undo all that work. Again, branches sound like a better fit.

>   Thanks for reading this , and I really hope you will add the feature ...
>  
>  
> Best Regards
> Scott.Yan
>  
>  

Re: external file

Posted by David Weintraub <qa...@gmail.com>.
On Thu, Dec 2, 2010 at 5:30 AM, Scott Yan <sc...@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@gmail.com