Tom,

> Is it possible to set up a repository on github which is
> automatically synchronised with svn?


    Here's a thought:

      [1]  Make a canonical *internal* git repository on
           some machine over which you have total control.
           Given that the total number of committers is small,
           this box could be done on a very modest box.
           For the sake of argument, let's call this
           machine 'internal'.

      [2]  Create a public repository on github.
           This will be all the non-committers ever see.

      [3]  Create a post commit hook on 'internal' that
           does a push to github.   Because 'internal'
           is the only machine that updates github,
           you're guaranteed that this will always
           be a trivial fast-forward operation.

      [4]  Make the post-submit hook on 'internal' also
           send the submit over to the public hosted svn
           server, for the sake of the svn folks out there.
           Later, rinse, repeat for Bzr, and whatever else.


    When folks in the community wish to get the latest changes,
    they just get stuff from github, or the bzr or svn host.
    They need not know/care about the existence of 'internal'.

    The core group of committers never manually commit
    to the git repository on github;  they just commit
    to 'internal'  (and 'internal' handles the sync to github).
    Sometimes, they might pull from the public git repositories
    of the community as well, merge/rebase those changes
    (and then do a commit to 'internal', which again causes
    the multi-way autosync).

    This eliminates all polling and even provides you
    with an opportunity to make an airlock between
    what the team submits and what the world sees.
    For example, you could have a CI server on 'internal'
    that runs tests on the commits and asynchronously
    updates a sister repository (or branch) for Gradle
    that includes a summary of the test results.

    Here's some ASCII art to illustrate the notion:

              .--------->.--------->.--------->.
              |          |          |          |
              |          v          v          v
         [internal]   [github]    [svn]      [bzr]
            ^  ^       |   |       | |        | |
            |  |       V   V       v v        v v
         committers  community  community  community
           ^    ^    |  |  |
           |    |    |  |  |
           |    |    v  v  v
           |    |   [public community git repositories]
           |    |             |          |
           |    |             V          |
           |    `-------------'          V
           `-----------------------------'


    What do you think?

        Cheers,
        -Jon

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to