From: Johannes Sixt <j6t@kdbg.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 7/7] push: document --lockref
Date: Fri, 12 Jul 2013 22:00:30 +0200 [thread overview]
Message-ID: <51E0605E.9020902@kdbg.org> (raw)
In-Reply-To: <7vli5bllsd.fsf@alter.siamese.dyndns.org>
Am 12.07.2013 19:40, schrieb Junio C Hamano:
> Johannes Sixt <j6t@kdbg.org> writes:
>
>> Am 12.07.2013 00:14, schrieb Junio C Hamano:
>>> Johannes Sixt <j6t@kdbg.org> writes:
>>>
>>>> Again: Why not just define +refspec as the way to achieve this check?
>>>
>>> What justification do we have to break existing people's
>>> configuration that says something like:
>>>
>>> [remote "ko"]
>>> url = kernel.org:/pub/scm/git/git.git
>>> push = master
>>> push = next
>>> push = +pu
>>> push = maint
>>>
>>> by adding a _new_ requirement they may not be able to satisify?
>>> Notice that the above is a typical "push only" publishing point,
>>> where you do not need any remote tracking branches.
>>
>> Why would it break? When you do not specify --lockref, there is no
>> change whatsoever.
>
> I thought your suggestion "Why not just define +pu as the way to
> achieve _THIS_ check?" was to make +pu to mean
>
> git push ko --lockref pu
>
> which would mean "check refs/remotes/ko/pu and make sure the remote
> side still is at that commit".
>
> If that is not what you meant, please clarify what _THIS_ is.
We have three independent options that the user can choose in any
combination:
o --force given or not;
o --lockref semantics enabled or not;
o refspec with or without +;
and these two orthogonal preconditions of the push
o push is fast-forward or it is not ("ff", "noff");
o the branch at the remote is at the expected rev or it is not
("match", "mismatch").
Here is a table with the expected outcome. "ok" means that the push is
allowed(*), "fail" means that the push is denied. (Four more lines with
--force are omitted because they have "ok" in all spots.)
ff noff ff noff
match match mismatch mismatch
--lockref +refspec ok ok denied denied
--lockref refspec ok denied denied denied
+refspec ok ok ok ok
refspec ok denied ok denied
Notice that without --lockref semantics enabled, +refspec and refspec
keep the current behavior.
(*) As we are talking only about the client-side of the push here, I'm
saying "allowed" instead of "succeeds" because the server can have
additional restrictions that can make the push fail.
-- Hannes
next prev parent reply other threads:[~2013-07-12 20:00 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-02 20:57 [RFD] Making "git push [--force/--delete]" safer? Junio C Hamano
2013-07-02 22:55 ` Johan Herland
2013-07-03 6:34 ` Johan Herland
2013-07-03 8:49 ` Junio C Hamano
2013-07-03 10:00 ` Johan Herland
2013-07-03 10:06 ` Jonathan del Strother
2013-07-03 10:11 ` Johan Herland
2013-07-03 10:50 ` Michael Haggerty
2013-07-03 12:06 ` Johannes Sixt
2013-07-03 19:53 ` Junio C Hamano
2013-07-04 5:37 ` Johannes Sixt
2013-07-04 5:46 ` Junio C Hamano
2013-07-03 19:50 ` Junio C Hamano
2013-07-03 20:18 ` Junio C Hamano
2013-07-03 19:48 ` Junio C Hamano
2013-07-09 19:53 ` [PATCH 0/7] safer "push --force" with compare-and-swap Junio C Hamano
2013-07-09 19:53 ` [PATCH 1/7] cache.h: move remote/connect API out of it Junio C Hamano
2013-07-09 19:53 ` [PATCH 2/7] builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN Junio C Hamano
2013-07-09 19:53 ` [PATCH 3/7] push: beginning of compare-and-swap "force/delete safety" Junio C Hamano
2013-07-09 19:53 ` [PATCH 4/7] remote.c: add command line option parser for --lockref Junio C Hamano
2013-07-16 22:13 ` John Keeping
2013-07-17 17:06 ` Junio C Hamano
2013-07-17 17:09 ` Junio C Hamano
2013-07-09 19:53 ` [PATCH 5/7] push --lockref: implement logic to populate old_sha1_expect[] Junio C Hamano
2013-07-09 19:53 ` [PATCH 6/7] t5533: test "push --lockref" Junio C Hamano
2013-07-09 19:53 ` [PATCH 7/7] push: document --lockref Junio C Hamano
2013-07-09 20:17 ` Aaron Schrab
2013-07-09 20:39 ` Junio C Hamano
2013-07-09 20:24 ` Johannes Sixt
2013-07-09 20:37 ` Junio C Hamano
2013-07-09 20:55 ` Johannes Sixt
2013-07-09 22:09 ` Junio C Hamano
2013-07-09 23:08 ` Junio C Hamano
2013-07-11 21:10 ` Johannes Sixt
2013-07-11 21:57 ` Junio C Hamano
2013-07-11 22:14 ` Junio C Hamano
2013-07-12 17:21 ` Johannes Sixt
2013-07-12 17:40 ` Junio C Hamano
2013-07-12 20:00 ` Johannes Sixt [this message]
2013-07-12 21:19 ` Junio C Hamano
2013-07-13 6:52 ` Johannes Sixt
2013-07-13 18:14 ` Junio C Hamano
2013-07-13 20:08 ` Junio C Hamano
2013-07-13 21:11 ` Johannes Sixt
2013-07-14 14:28 ` John Keeping
2013-07-13 20:17 ` Johannes Sixt
2013-07-14 19:17 ` Junio C Hamano
2013-07-14 20:21 ` Johannes Sixt
2013-07-14 20:34 ` Jonathan Nieder
2013-07-14 20:49 ` Jonathan Nieder
2013-07-14 20:59 ` Johannes Sixt
2013-07-14 21:28 ` Jonathan Nieder
2013-07-15 4:10 ` Junio C Hamano
2013-07-15 4:44 ` Jonathan Nieder
2013-07-15 15:37 ` Junio C Hamano
2013-07-15 20:30 ` Johannes Sixt
2013-07-15 3:50 ` Junio C Hamano
2013-07-15 15:47 ` Default expectation of --lockref Junio C Hamano
2013-07-15 20:27 ` [PATCH 7/7] push: document --lockref Johannes Sixt
2013-07-09 21:37 ` Marc Branchaud
2013-07-09 20:27 ` Michael Haggerty
2013-07-09 20:42 ` Junio C Hamano
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=51E0605E.9020902@kdbg.org \
--to=j6t@kdbg.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.