From: Ævar Arnfjörð Bjarmason Date: Fri, 24 Sep 2010 13:07:27 GMT Subject: Re: Multiple checkouts active for the same repository Message-ID: In-Reply-To: <4C9C6F8B.3090806@tech.2degreesnetwork.com> On Fri, Sep 24, 2010 at 09:29, Gustavo Narea wrote: > We're currently migrating from another DVCS. Which one? > 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? If you really need this the best solution is to just `git clone` the project multiple times and check out each branch in its own dir. Then have some shellscript to update them all. But just using the Git workflow would be better. > Apart from the situation I describe in the initial email, there's > another limitation in the development environment: Our IDE, Eclipse + > Pydev, assumes each project (i.e., branch/checkout) to be on different > directories and each project should have different settings (e.g., paths > to dependencies, which could be different), but with GIt everything > would be a single project because it's all on the same path. Can't you just modify your build environment to check the output of `git symbolic-ref HEAD` or equivalent, instead of checking paths?