Thread (1 message) 1 message, 1 author, 2016-06-15

Re: specifying "fast-forward" only in git-pull

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:02

"David Tweed" [off-list ref] writes:
Hi, I'm looking through the documentation on git-pull and
I see that I can specify a particular (sequence of) merge
strategies, but I can't see a way to say "only do a fast
forward, stopping if a fast forward doesn't apply".
(Fast-forward doesn't appear to be a named strategy,
which is why I can't use it with -s). Is there a way to
do this?

Rationale: I have a repository on several machines that
are synchronised via usb-stick. 99.9% of the time a fast
forward is all that is needed, and for scripting the
synchronisation I'd like to restrict it so that only
fast-forwards can happen automatically and everything
else I have to do by invoking git myself.
Presumably you are scripting around "git pull" and wondering
if there is a way to let you say "git pull -s ffonly $stick".

Why don't you script around "git fetch" instead?

	#!/bin/sh
 	stick=$1
       
	git fetch "$stick"
        not_in_stick=$(git rev-list FETCH_HEAD..HEAD)
        if test -z "$not_in_stick"
        then
        	: stick fast forwards
                git merge FETCH_HEAD
	else
        	echo >&2 "Our HEAD has things the stick does not."
		exit 1
	fi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help