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 <[email protected]>
> Cc: Michel Thierry <[email protected]>
> Cc: James Ausmus <[email protected]>
> Cc: Lucas De Marchi <[email protected]>
> Signed-off-by: Rodrigo Vivi <[email protected]>
> ---
>  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,

Reviewed-by: Lucas De Marchi <[email protected]>

> +     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
> 
_______________________________________________
dim-tools mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dim-tools

Reply via email to