From: Matthias Urlichs Date: Thu, 02 Jun 2005 07:14:53 GMT Subject: Re: [SCRIPT] cg-rpush & locking Message-ID: <20050602071453.GA16616@kiste.smurf.noris.de> In-Reply-To: Hi, Daniel Barkalow: > If the lock is only to protect against someone else modifying HEAD after > we've checked that it is our starting point and before we modify it, > there's no reason not to hold the lock while pushing; it wouldn't block > anything other than someone doing a quick push in the middle of our long > one, and thereby causing us to dump a lot of useless objects on the > server (which will become obsolete as we will need to do the merge and > push a different version). > The objects we push aren't going to be obsolete. The server needs them anyway, because our HEAD refers to them. What if the connection dies in the middle of a push? You then sit there waiting for it, and the lock, to time out. OTOH, an atomic cmpxchg on the server can't block and can't timeout. > you want to have the > client watch for the resolution of the other transfer one way or the > other, since you're in the current state precisely because you lost on > getting the lock and now definitely need the next version. > I disagree. Given that you need to wait for the upload to finish anyway (whether you know it or not ;-) it makes sense to spend the time actually uploading -- upload speed is frequently lower than download for individuals. -- Matthias Urlichs | {M:U} IT Design @ m-u-it.de | smurf@smurf.noris.de Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de - - Who was that masked man?