git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Torsten Bögershausen" <tboegi@web.de>
To: "Boettger, Heiko" <Heiko.Boettger@karlstorz.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: git and concurrent access to local repository
Date: Tue, 22 Mar 2016 10:46:15 +0100	[thread overview]
Message-ID: <56F11467.3010004@web.de> (raw)
In-Reply-To: <8C0042D8869AEA4AA334B49AFBBCEF82B53CF505@TUT-EX02-PV.KSTG.corp>

On 2016-03-22 09.00, Boettger, Heiko wrote:
> Hi,
> 
> I always thought git allows concurrent access to a repository and expected that this also is true when working with local repositories. The only problem I was aware of is that the use of NFS and windows shares might cause problems. However I sometime see the following error messages in our concurrent build process.
> 
That depends.
concurrent read only access should work, AFAIK.
concurrent read/write access (in the way I understand what you describe below)
is not supported. (Well, that is my knowledge).

> message 1:
> 
> Fetching origin
> error: cannot lock ref 'refs/remotes/origin/branchname  Unable to create '/home/workingcopy/.git/refs/remotes/origin/ branchname.lock': File exists.
> 
> If no other git process is currently running, this probably means a
> git process crashed in this repository earlier. Make sure no other git
> process is running and remove the file manually to continue.
> From servername:gitrepo
> ! ccea072...349809e branchname  -> origin/branchname  (unable to update local ref)
> error: Could not fetch origin
> 
> message 2:
> 
> error: cannot lock ref 'refs/remotes/origin/master': ref refs/remotes/origin/master is at 07cd4a461229f9352d16063ff209e828cba592ea but expected 7c4ddcf998bad94f4f7e8e806baaa475f2069e60
> 
> message 3 (on git pull --rebase):
> 
> Cannot rebase onto multiple branches
> 
> Does that mean there is an issue inside git's locking or is concurrent access to the same workingcopy not supported  at all? I expected the commands would blocking until they can acquire the lock, but It seems like there are other command which are either aborting or not locking at all (git pull -reabase). I think git pull --rebase is just a chain of other git commands where the lock is done on the individual steps.
> 
The whole scenario does make little sense to me.
One user/process/shell script should update one work tree,
like fetch/pull/rebase. After that, the build is started.
This has nothing to do with NFS, it's more that it is clear,
what is done in which order, and to have things reproducible.

like
- fetch
- checkout
- make
- test.

How does the scenario work, that you want to achieve ?

And why and how are multiple users/processes work in the same directory ?


> Am I doing something wrong or is it concurrent access just not support this way? 
> Does that mean I have to use my own locks such as putting flock around each call?
I'm not sure, if I understand the scenario completely.
It looks, as if different processes share one work tree,
as if 2 persons share one keyboard, one doing lets say C-programming,
and the other is doing some shell script development. At the same time.
Using the same keyboard.

I don't know, if flock will help you, but I may miss something.
> 
> Best Regards
> Heiko Böttger

  reply	other threads:[~2016-03-22  9:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-22  8:00 git and concurrent access to local repository Boettger, Heiko
2016-03-22  9:46 ` Torsten Bögershausen [this message]
     [not found]   ` <8C0042D8869AEA4AA334B49AFBBCEF82B53CF564@TUT-EX02-PV.KSTG.corp>
     [not found]     ` <56F14E7F.3010801@web.de>
2016-03-23  7:08       ` AW: AW: " Boettger, Heiko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56F11467.3010004@web.de \
    --to=tboegi@web.de \
    --cc=Heiko.Boettger@karlstorz.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).