Viewing 25 posts - 1 through 25 (of 25 total)
  • Any Subversion experts in the house?
  • Torminalis
    Free Member

    Knowing as I do that nothing is beyond the STW Massive, I thought I would see if any of you guys have any thoughts on this…

    I am currently moving our entire software group (3 companies) to an SVN based source control solution, away from varying degrees of manual control, VSS, CVS, SVN etc. I have been lumbered with this task after showing an enthusiasm for automated source control rather than the existing antiquated manual system. For my company alone this was no problem and worked very well but now it is being rolled out to all of the companies in the group!

    We have 3 companies, 9 major projects, hundreds of components, thousands of sub projects in various languages (C++, C#, Delphi, C ..etc…). From the back of the new system I am going to be using Cruise Control as a CI server which will wrap around VisualBuild, Nant and any other compilers that need to be considered. So, the question is…

    Is it possible to run multiple servers on a single box? Ideally my structure would be Project|Component|Subcomponent but at the moment subversion does not seem to be flexible enough to handle this configuration whilst maintaining a distinct set of hooks/properties for each of the Components.

    Any thoughts or experiences in this field?

    Thanks in advance if anyone can help. Cheers!

    allthepies
    Free Member

    ‘kin hell mate that’s a grim task 😐

    Torminalis
    Free Member

    ‘kin hell mate that’s a grim task

    You are not wrong.

    philconsequence
    Free Member

    on my way buddy!!

    toby1
    Full Member

    I thought this thread was going to be about mis-leading people and acheiving the preferred outcome through underhand means. But it’s about Source control, brilliant!

    😛

    Good luck though I’m sure the Hive mind will come up with some opinion shortly, in the meantime just let me say “Forget about TFS!” – that’s all I have to say on the matter 🙂

    peath
    Free Member

    It’s totally possible to have a number of repositories (each with their own hooks/properties etc) hosted on a single machine.

    If you’ve not been there read this. It’s very informative.

    I’ve setup servers with multiple repositories, with access rights for different users etc. Under *nix though, but Windows support seems pretty good too.

    Torminalis
    Free Member

    Forget about TFS

    With over half of our code base in Delphi, it was never an option.

    Torminalis
    Free Member

    It’s totally possible to have a number of repositories

    Yep, that bit is a doddle, what I now want though is a way to group those repositories into a higher level grouping.

    So, say for instance, we have Project A, which has components 1 & 2. I want to be able to access projects 1 & 2, each of them to be able to have their own hooks and properties, but to have them grouped under project A so that they are easily distinct from Project B and the shared components server… etc…

    The best thing I can come up with at the moment is to create multiple virtualised servers each with an SVN server aboard. I was just wondering if anyone had a more elegant way to do this…

    peath
    Free Member

    Hmmmm… I was thinking Project A could be a meta project populated via svn:externals declarations, but then you’d lose the hooks you’d set up for Project 1 & 2…

    [Edit]Maybe you wouldn’t loose the hooks as the parent repo would be Project 1 or 2, would need to test…[/Edit]

    Not sure how the multiple virtualised servers will help though?

    Torminalis
    Free Member

    I was thinking multiple virtualised servers would mean I could run a completely separate instances of SVNServer for each of the projects. This would mean that the second tier of the hierarchy (ie the repositories) would be each of the components that makes up the product and could have its own distinct set of hooks without any messing about. Some components will be C++, some will be C#, some will be Delphi hence the need for the ability to fire different CI processes.

    I think. 😕

    peath
    Free Member

    Still don’t think I get it I’m afraid.

    Hooks are associated with the repositories and not the server, so adding multiple servers just complicates it unnecessarily. Maybe the svn:external would help along with a meta project for the top level Project A?

    I’m probably missing something?! 😕

    Torminalis
    Free Member

    Nah mate, it could well be that I am missing something or explaining it badly. I am currently reading about svn:externals which look very useful for maintaining links between core files that are shared but I am not sure it tackles the issues I am looking at.

    Each product (of which there are several) has a collection of components that make it up, servers, clients, widgets of all sorts in various languages. Each of these components will have a separate build process so each of these components needs to be a repository in it’s own right. Now at the level of component, we have hundreds and hundreds of the damn things and most are made of a whole pile of sub components.

    If I just build a repository for each component, it is going to be an absolute birds nest so I want to be able to group them easily and visibly on the server. When we go to write a new build script or run any coding metrics against the server it would be great to do it by product rather than by individual component.

    Is that making a little more sense now? I hope so because you have me fearing that I am more lost than I thought I was!

    Thanks for the input though, all good stuff to get me thinking.

    WorldClassAccident
    Free Member

    Where are you based?

    What you need is a consultant like me. I can come along to your offices, review the situation and then cut’n’paste this STW thread into a recommendations document for almost less than £1,000 per day.

    sas
    Free Member

    What do you mean by separate hooks and properties for each component? If you’re going to be sharing code between separate repositories then they probably shouldn’t be separate.

    Also, when you say SVNServer do you actually mean Apache?

    Toasty
    Full Member

    What do you mean by separate hooks and properties for each component? If you’re going to be sharing code between separate repositories then they probably shouldn’t be separate.

    That’s was what I thought. The physical size of the code in there really shouldn’t be an issue, I work in a 250ish person company who have been sharing 1 repo between everyone for yeears now, it’s rock solid.

    You can give access to specific people, on a per folder basis, to allow sharing of code as required.

    When you say 3 companies, are they all on the same site?

    Torminalis
    Free Member

    What do you mean by separate hooks and properties for each component?

    Each repository has a set of hooks specifying pre and post commit, locking events etc. These hooks are going to be used to trigger a continuous integration process on a separate box. Because we have code in lots of different languages, we would like to trigger different CI scripts for different code.

    Also, when you say SVNServer do you actually mean Apache?

    No, SVN runs as a service and it is the instances of this service that I am talking about. It would be relatively trivial to run multiple servers through a single web server.

    The physical size of the code in there really shouldn’t be an issue, I work in a 250ish person company who have been sharing 1 repo between everyone for yeears now, it’s rock solid.

    On one big shared project, this would not be a problem but there are a few reasons (maybe mistakenly!) that I am looking to do it this way.

    Having so may people working out of a single repository do you not find that the logs become very confusing, flitting back from one project to the other?
    Have you found a way to ensure that the revision numbers on each separate component are sequential? I know it is not vital but I am trying to create as elegant a solution as possible.

    When you say 3 companies, are they all on the same site?

    Sadly not, we have one in Pakistan, one in Chicago and 2 offices in the UK. We are looking at products like wanDisco to resolve any related issues but that is a whole separate kettle of fish.

    This is a completely fresh implementation so I am trying to plan it as well as possible and ensure that it is pretty tidy whilst allowing us as much flexibility as possible.

    Thanks again for your help, keep ’em coming.

    Torminalis
    Free Member

    company who have been sharing 1 repo between everyone for yeears now

    Do you mean 1 repository or 1 SVN server?

    MrNutt
    Free Member

    you may be best off with going cloud based and, erm, praying 😀

    As WCA before me, I can consult but I may cost a little more!

    Torminalis
    Free Member

    How do you guys know I’m not the consultant?

    nickname
    Free Member

    You could just avoid having multiple repositories, I don’t really see the point, but I might be missing something.

    We have a similar setup at work (although just 1 company!), lots of shared libs, and lots of projects/components that require these libs.

    Our structure is like so:

    /projects/
    —>/foo
    —>/bar

    /libraries/
    —>/vendor
    —>/python
    —>—>/a
    —>—>/b
    –>/cpp
    —>—>/a


    lots more stuff!

    Our projects will then svn:external in the required libs / vendor code.

    With regards for continuous integration, wouldn’t you be better with Buildbot ( http://buildbot.net ) or Hudson ( http://hudson-ci.org/ )

    At our company I setup Buildbot, which comes with its own source-control poller (SVNPoller). It works pretty well. I would avoid writing your own system if poss. I did this back in the day, and Buildbot does everything and more 😉

    With regards to logging, you only need to view logs for a specific project/component/lib right? You don’t need to worry about viewing all logs, so you won’t see logs of things you’re not interested in.

    On a final note, aren’t people now moving towards Git instead to SVN? 😉

    Toasty
    Full Member

    Do you mean 1 repository or 1 SVN server?

    1 repository, we have lots of jumping between projects and sharing of code between teams*

    *well technically 2 repos now I think, the second one was a small offshoot though 🙂

    Having so may people working out of a single repository do you not find that the logs become very confusing, flitting back from one project to the other?

    Not at all, the projects are similar to how nickname mentions. Contained within the root of the repositary is all the parent folders for each project, each one of these is a 1-3 year project with 5-10 or so coders on each so they get quite hefty.

    You check out any specific folder you require locally in the exact same way as you would do the root. You can query any of these folder and get a log specific to that branch, this obviously means the version numbers don’t increment by 1 every time, but you can still “get” the project at revision 10,000 or similar, branch over ranges and things. The revision number is in the hundreds of thousands now I think, I can check tomorrow, it’s not used in the projects as a versioning number, it does get used to tag where bug fixes and things can be found though.

    We do all work in 1 big office though, I can see that over numerous sites it might not be the best way to go 🙂

    Torminalis
    Free Member

    We have 15 years worth of code, many acquisitions, millions and millions of lines of code, to run them from 1 repository would seem like a crazy idea when you consider the functionality that you can get straight out of the box. How do you hook into multiple CI processes without a polling solution?

    With regards for continuous integration, wouldn’t you be better with Buildbot ( http://buildbot.net ) or Hudson ( http://hudson-ci.org/ )

    Don’t know BuildBot but Hudson is also under consideration.

    On a final note, aren’t people now moving towards Git instead to SVN?

    Because I would prefer people to be coding rather than farting around with over complex SCM software 😉 (and the decision has been somewhat made for me)

    luked2
    Free Member

    On a final note, aren’t people now moving towards Git instead to SVN?

    Git is simply awesome.

    It takes a little bit of thinking to get into, but once you’re past that it is a delight to use.

    It’s like riding lovely flowing single track, flat out, dropping everyone in sight, nailing every corner just so, and generally being awesome.

    Whereas svn is like slogging up a fire road in the rain.

    And perforce. Well perforce is like trying to ride across a huge ploughed field. In heavy rain. On a F.S. bike you bought in Tesco’s for £80. With a seatpost that’s too small for the seat tube.

    TimS
    Free Member

    I’m less expert than some of the others here, but we use TortoiseSVN on Windows for our version control. We’ve probably got 3 or 4 repositories for various uses: one for all our (4) product’s source code, one for the website, and a couple for various configuration files and stuff.
    Anyway, I think that Tortoise will only show you log entries for the current working copy folder (i.e. you don’t see loads of irrelevant log messages for stuff that you’ve not got checked out).

    andy_hamgreen
    Full Member

    ^^luked2 – don’t know what in Gods name you’re all talking about but the analogy is brilliant 🙂

Viewing 25 posts - 1 through 25 (of 25 total)

The topic ‘Any Subversion experts in the house?’ is closed to new replies.