Files
git/Documentation
Junio C Hamano 75e5c0dc55 push: introduce REJECT_FETCH_FIRST and REJECT_NEEDS_FORCE
When we push to update an existing ref, if:

 * the object at the tip of the remote is not a commit; or
 * the object we are pushing is not a commit,

it won't be correct to suggest to fetch, integrate and push again,
as the old and new objects will not "merge".  We should explain that
the push must be forced when there is a non-committish object is
involved in such a case.

If we do not have the current object at the tip of the remote, we do
not even know that object, when fetched, is something that can be
merged.  In such a case, suggesting to pull first just like
non-fast-forward case may not be technically correct, but in
practice, most such failures are seen when you try to push your work
to a branch without knowing that somebody else already pushed to
update the same branch since you forked, so "pull first" would work
as a suggestion most of the time.  And if the object at the tip is
not a commit, "pull first" will fail, without making any permanent
damage.  As a side effect, it also makes the error message the user
will get during the next "push" attempt easier to understand, now
the user is aware that a non-commit object is involved.

In these cases, the current code already rejects such a push on the
client end, but we used the same error and advice messages as the
ones used when rejecting a non-fast-forward push, i.e. pull from
there and integrate before pushing again.

Introduce new rejection reasons and reword the messages
appropriately.

[jc: with help by Peff on message details]

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-24 14:37:23 -08:00
..
2012-03-28 08:47:23 -07:00
2012-10-21 13:56:23 -07:00
2012-10-25 06:42:02 -04:00
2011-08-08 09:30:12 -07:00
2012-09-18 21:49:46 -07:00
2012-04-20 15:49:16 -07:00
2012-07-09 14:40:03 -07:00
2012-09-25 10:39:52 -07:00
2012-09-18 21:49:50 -07:00
2012-06-19 11:35:19 -07:00
2012-09-11 11:23:54 -07:00
2011-12-12 11:52:31 -08:00
2011-09-06 11:42:12 -07:00
2011-05-19 10:55:54 -07:00
2011-03-11 10:59:16 -05:00
2012-10-21 13:56:23 -07:00
2010-07-05 13:39:02 -07:00
2012-06-19 11:35:19 -07:00