(oops, now my email was rejected)

On Wed, Oct 31, 2012 at 12:55 AM, Felipe Contreras
<felipe.contre...@gmail.com> wrote:
> Hi,
>
> (again because the mailing list rejected it) (Gmal switched interface
> and HTML is the default)
>
> On Wed, Oct 31, 2012 at 6:37 AM, Chris Rorvick <ch...@rorvick.com> wrote:
>>
>> References are allowed to update from one commit-ish to another if the
>> former is a ancestor of the latter.  This behavior is oriented to
>> branches which are expected to move with commits.  Tag references are
>> expected to be static in a repository, though, thus an update to a
>> tag (lightweight and annotated) should be rejected unless the update is
>> forced.
>>
>> To enable this functionality, the following checks have been added to
>> set_ref_status_for_push() for updating refs (i.e, not new or deletion)
>> to restrict fast-forwarding in pushes:
>>
>>   1) The old and new references must be commits.  If this fails,
>>      it is not a valid update for a branch.
>>
>>   2) The reference name cannot start with "refs/tags/".  This
>>      catches lightweight tags which (usually) point to commits
>>      and therefore would not be caught by (1).
>>
>> If either of these checks fails, then it is flagged (by default) with a
>> status indicating the update is being rejected due to the reference
>> already existing in the remote.  This can be overridden by passing
>> --force to git push.
>>
>> The new status has the added benefit of being able to provide accurate
>> feedback as to why the ref update failed and what can be done.
>> Currently all ref update rejections are assumed to be for branches.
>
> Makes sense to me. I've believe I've been hit by this a couple of
> times when tags were updated, and a colleague did 'git push' and they
> went all back, or something like that. To handle that case properly
> probably more changes are needed, but this is a change in the right
> direction.
>
>> +test_expect_success 'push tag requires --force to update remote tag' '
>> +       mk_test heads/master &&
>> +       mk_child child1 &&
>> +       mk_child child2 &&
>> +       (
>> +               cd child1 &&
>> +               git tag lw_tag &&
>> +               git tag -a -m "message 1" ann_tag &&
>> +               git push ../child2 lw_tag &&
>> +               git push ../child2 ann_tag &&
>> +               >file1 &&
>> +               git add file1 &&
>> +               git commit -m "file1" &&
>> +               git tag -f lw_tag &&
>> +               git tag -f -a -m "message 2" ann_tag &&
>> +               ! git push ../child2 lw_tag &&
>
> You probably should use test_must_fail.

Thanks, will fix.

> I don't see anything wrong with the patch, but I wonder if it might be
> possible to split it to ease the review.

I initially thought I'd split it into two: 1) to improve the feedback
and 2) to change the behavior.  But (1) was shaping up to be similar
in size to the sum so I scrapped that idea.  I will see what I can do.

Thanks,

Chris
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to