Re: Multiple checkouts active for the same repository
- From
- Gustavo Narea <gnarea@tech.2degreesnetwork.com>
- Date
- Sep 27, 2010, 10:33 UTC
- Message-ID
- <4CA072FC.3020004@tech.2degreesnetwork.com>
- In-Reply-To
- <14b089955184bbb677b6434993682403@212.159.54.234>
Hello,
Thanks! I've given git-new-workdir a try and it seems to be what I was searching for.
- Gustavo.
On 24/09/10 16:33, Julian Phillips wrote:
Show 52 quoted lines
> On Fri, 24 Sep 2010 10:29:47 +0100, Gustavo Narea > <gnarea@tech.2degreesnetwork.com> wrote: >> Hello. >> >> We're currently migrating from another DVCS, which allows us to have >> working copies of each branch in separate directories, so that their >> code can be used simultaneously. However, I haven't found a way to do >> this with Git, at least not an easy way. Can you please help me? > > The git-new-workdir script to be found in contrib/workdir allows multiple > working copies to share the same repository - though there are some > caveats: > > 1) uses symbolic links, so doesn't work on Windows > 2) the working copies are not aware of each other, so if you change a > checked out branch from another working copy you have to remember to git > reset your working copy before doing anything with it to get it back in > sync with the branch > 3) you have to remember not to delete the actual clone > 4) the working copies are not aware of each other, so it is possible for > objects needed by one working copy to get pruned from another one > > Personally, I use this script all the time to checkout multiple branches > at the same time taking care to stay away from the issues above, and > everything hums along nicely. > >> We are a team of Web developers and testers working on an application. >> There are always a few development branches and a stable branch, and >> testers need all the branches with the very latest code available at all >> times. >> >> The way we handle it at the moment is very simple because the server >> hosting the remote repository is the same that hosts the deployed >> instances of each branch, so when we push to the remote repository, the >> code for each site is automatically updated. >> >> We use the following structure: >> /srv/repositories/project/branch1 >> /srv/repositories/project/branch2 >> /srv/repositories/project/branch3 >> >> Is there any simple way to do this with Git? I can only think of two >> options that involve hooks: >> >> * Have a hook that exports each branch to a directory like >> /srv/repositories/project/branchN >> * Have one Git repository per branch, so that each repository have a >> different checkout active. Then the main remote repository will >> have post-receive hooks that trigger a pull on each individual >> >> I'm not particularly happy with either way. Is there a better solution? >
-- Gustavo Narea. Software Developer. 2degrees, Ltd. <http://dev.2degreesnetwork.com/>.