From: Carlos Martín Nieto Date: Fri, 13 Jan 2012 15:18:45 GMT Subject: Re: fetch for bare repository Message-ID: <20120113151845.GD2850@centaur.lab.cmartin.tk> In-Reply-To: <4F103797.7060906@gmail.com> On Fri, Jan 13, 2012 at 05:54:31PM +0400, Dmitry A. Ashkadov wrote: > 13.01.2012 17:40, Carlos Martín Nieto пишет: > >On Fri, Jan 13, 2012 at 02:42:03PM +0400, Dmitry A. Ashkadov wrote: > >>Hello! > >> > >>I can't understand how to fetch branches from external repository > >>for bare repository. > >What you probably want is a mirror (git clone --mirror). Unless you > >tell git that you want a mirror, it's going to assume that you want a > >bare repo to push your own changes up to it. Such a repo has no need > >to be kept up to date, so clone doesn't set up any fetch refspecs. > > I don't have access to an origin repository. So, I need bare > repository and push changes up to it. So, I think the word "mirror" > isn't applicable to private repository. When you say access here, do you mean that you can't push to it? When I say access later on, it means being able to fetch from it. Otherwise I don't see how you could have cloned from it. If your private repository's braches to reflect what's upstream, I'd call that a mirror. > > >Stepping back, do you need to fetch those branches into the private > >repo? If you still have access to the main repo and that's where the > >main project development is happening, why not use upstream's repo to > >get those changes to your local repo (as in the one you use to work)? > >It sounds like you're trying to replicate a centralised VCS' > >workflow. Git works like a network and you can merge a branch from > >upstream if you need to and then push to the private repo. > > Yes, I can add one more remote to my local repository, then fetch > changes from it and push it to private repository. But I thought > that update private repository is the best way. Best way to achieve what? If you want your private repo to reflect what's upstream, doing the inital clone with --mirror (or setting the remote.origin.fetch config variable to "+refs/*:refs/*", which is the main difference) will let you run 'git fetch' on that repo and get the changes. But what I was asking was whether you actually need to bother with that operation. If you need to merge or rebase from upstream, a push will include those new changes, as they're now in your branch, so what advantage do you get from copying those branches from upstream if they're just the same? cmn