On Sat, Oct 20, 2007 at 06:15:21 -0700, Erich Ocean wrote: > Our developer group has a shared git repository at > git@xxxxxxxxxxxxxxxxx:dev. > > Each developer has established their own local repository by running: > > git clone git@xxxxxxxxxxxxxxxxx:dev > git config remote.origin.push master:refs/remotes/<username>/master The paths on server are refs/remotes/<userame>/master. It's more common to publish (push to public or shared repository) to refs/heads. The refs/remotes namespace is normally only used when fetching. There's nothing in git saying you can't do it your way, but there are things that make the common way more convenient. > Each developer then does a `git pull` to update their master branch, merges > their changes from their local topic branches, and then does `git push` to > make the results available at git@xxxxxxxxxxxxxxxxx:dev. > > As the integrator, I have then been ssh'ing into the git@xxxxxxxxxxxxxxxxx > machine, cd'ing to "dev" and doing: > > git merge <username>/master Yes, because locally refs/remotes is searched when looking for unqualified ref. But if you checked that out, git would complain it's not a branch and created a detached head. > to incorporate their changes after running `git diff` to see what the > changes are. > > My own development repository is set up identically to the other > developers. > > What I would like to do now is clone the git@xxxxxxxxxxxxxxxxx:dev > repository on my local machine a second time, checkout a <username>/master > branch in that repository, and then use BBEdit's graphical diff to visually > see the changes between my own repository and what another developer has > pushed to the shared repository. I'll then merge them into my own developer > repository and push that to the shared repository for the rest of the > developers to pull from, so no longer will I merge by ssh'ing into the > machine with the shared repository. > > The problem is, when I clone git@xxxxxxxxxxxxxxxxx:dev, the various > <username>/master's aren't there. I have tried a bunch of different ways, > but they all give me errors. For example: By default clone only compies refs from refs/heads to refs/remotes/origin and from refs/tags to refs/tags. You have two options here: - Move the branches on server to refs/heads. Then the various <username>/master will be visible locally as origin/<username>/master (qualified names refs/remotes/origin/<username>/master -- you can of course call the remote differently if you want). - Add +refs/remotes/*:refs/remotes/origin/* to remote.origin.fetch config key in your local repository (I am not sure it will work properly with multiple source patterns with the same destination pattern, though). -- Jan 'Bulb' Hudec <bulb@xxxxxx>
Attachment:
signature.asc
Description: Digital signature