[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jgit-dev] creating a new branch fails with LOCK_FAILURE if branch already exists
|
Thanks for the explanations. That was helpful :-)
-----Original Message-----
From: Robin Rosenberg [mailto:robin.rosenberg@xxxxxxxxxx]
Sent: Mittwoch, 4. Januar 2012 17:43
To: Shawn Pearce
Cc: Kempin, Edwin; JGit Developers list
Subject: Re: [jgit-dev] creating a new branch fails with LOCK_FAILURE if branch already exists
Shawn Pearce skrev 2012-01-04 16.27:
> On Wed, Jan 4, 2012 at 06:30, Kempin, Edwin<edwin.kempin@xxxxxxx> wrote:
>> this is how we create a new branch:
>>
>> final RefUpdate u = repo.updateRef(refname);
>> u.setExpectedOldObjectId(ObjectId.zeroId());
>> u.setNewObjectId(object.copy());
>> u.setRefLogIdent(refLogIdent);
>> u.setRefLogMessage("some message", false);
>> final RefUpdate.Result result = u.update(rw);
>> switch (result) {
>> case FAST_FORWARD:
>> case NEW:
>> case NO_CHANGE:
>> // branch creation was successful
>> ...
>> break;
>> default: {
>> throw new IOException(result.name());
>> }
>> }
>>
>> When the branch creation fails because a branch with the name already exists LOCK_FAILURE is returned as result.
>
> Yes. Because LOCK_FAILURE is returned when the reference's current
> value does not match the expected old ObjectId. Using
> ObjectId.zeroId() is only special in terms of looking for the
> reference to not exist at all, otherwise it is treated the same as if
> any other ObjectId was used and the reference no longer points at that
> ObjectId.
I.e do not call setExpectedOldObjectId() at all to create the
branch regardless of whether it is new or not.
-- robin