[PATCH] qf: Make qf_pull -f forcibly clean

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Mar 13 23:31:56 UTC 2018


On Mon, Mar 12, 2018 at 04:55:26PM -0700, Lucas De Marchi wrote:
> On Mon, Mar 12, 2018 at 04:08:41PM -0700, Rodrigo Vivi wrote:
> > qf_checkout implies that you need to have that baseline
> > on your local repository, what it is not good for a distributed
> > maintenance.
> > 
> > Let's make qf pull -f useful for the case we want to start
> > a clean rebase from anywhere.
> > 
> > v2: Remove dubious comments and use -f.
> > v3: Avoid git pull --ff-only breaking force so force with fetch
> >     and hard reset
> > 
> > Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> > Cc: Michel Thierry <michel.thierry at intel.com>
> > Cc: James Ausmus <james.ausmus at intel.com>
> > Cc: Lucas De Marchi <lucas.demarchi at intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> > ---
> >  qf | 26 +++++++++++++++++++++++---
> >  1 file changed, 23 insertions(+), 3 deletions(-)
> > 
> > diff --git a/qf b/qf
> > index 270bcf53000a..ad37064902b4 100755
> > --- a/qf
> > +++ b/qf
> > @@ -404,11 +404,18 @@ function qf_pull
> >  {
> >  	cd_toplevel
> >  
> > -	qf fetch
> > +	qf_fetch
> >  	cd patches
> > -	git pull --ff-only
> >  
> > -	qf co
> > +	if [[ $FORCE ]]; then
> > +		git fetch
> 
> qf_fetch already fetches from remote, so you can remove it from here.
> 
> > +		git reset --hard $(git rev-parse --abbrev-ref @{u})
> 
> There are also the cases in which the user changed the branch so
> `git rev-parse --abbrev-ref @{u}` may point to the wrong upstream or
> point nowhere:
> 
> $ cd patches
> $ git checkout -b bla
> $ git rev-parse --abbrev-ref @{u}
> fatal: no upstream configured for branch 'bla'
> $ git checkout --detach
> $ git rev-parse --abbrev-ref @{u}
> fatal: HEAD does not point to a branch
> 
> But then there would be other places to fix, like in qf_export.
> I'm not sure if it's worth the trouble to fix it, so with the removal of
> git fetch above,

hm... :(
yeap.... let's fix this later if we need.
For now let's focus on the current case we need here
where we don't change the branches

> 
> Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

pushed, thanks.

> 
> > +	else
> > +		git pull --ff-only
> > +		qf_co
> > +	fi
> > +
> > +	cd ..
> >  }
> >  
> >  function qf_stage
> > @@ -587,6 +594,19 @@ function qf_usage
> >  	echo "See '$qf help' for more information."
> >  }
> >  
> > +FORCE=
> > +while getopts f opt; do
> > +	case "$opt" in
> > +		f)
> > +			FORCE=1
> > +			;;
> > +		*)
> > +			echo "See '$qf help' for more information."
> > +			exit
> > +	esac
> > +done
> > +shift $((OPTIND - 1))
> > +
> >  # qf subcommand aliases (with bash 4.3+)
> >  if ! declare -n subcmd=qf_alias_${subcommand//-/_} &> /dev/null || \
> >  		test -z "${subcmd:-}"; then
> > -- 
> > 2.13.6
> > 


More information about the dim-tools mailing list