Subject: bug#50026: Specify a pull-request in --with-branch package transformations

From: Philippe SWARTVAGHER <[email-masked]>
Date: Thu, 12 Aug 2021 11:38:38 +0200

Hello,

A nice feature would be to be able to use a pull-request as branch to
specify in the `--with-branch` transformation option.

A use-case is to use a pull-request coming from a private fork, thus we
can't use the combination `--with-git-url= with-branch=`.

As an example, if I follow
https://gitlab.inria.fr/help/user/project/merge_requests/reviews/index.md#checkout-merge-requests-locally-through-the-head-ref,
I should be able to do something like:

```bash

guix build chameleon --with-branch=chameleon=merge-requests/262/head

```

(with 262 being the pull-request I'm interested in) However, this fails:

```

guix build: erreur : impossible de récupérer la branche «
merge-requests/262/head » depuis
https://gitlab.inria.fr/solverstack/chameleon : cannot locate
remote-tracking branch 'origin/merge-requests/262/head'
```

While commands stated in the documentation work well:

```bash

git clone https://gitlab.inria.fr/solverstack/chameleon && cd chameleon

git fetch origin merge-requests/262/head:mr-262

git checkout mr-262

```

I guess the fetch step is lacking in the way Guix handles the
`--with-branch` transformation.

FYI, Ansible is able to do things like that (see
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/git_module.html),
by combining options `refspec` and `version`.

I'm aware a workaround is to download the patch corresponding to the
pull-request and using `--with-patch`, however handling it directly with
`--with-branch` would be more handy !

Thanks,

-- 
Philippe SWARTVAGHER

PhD Student
TADaaM team, Inria Bordeaux Sud-Ouest