Re: [PATCH 2/2] Add git sha information to the gdb version string

Simon Marchi
2020-03-27T13:56:36Z

On 2020-03-27 8:27 a.m., Andrew Burgess wrote:
> +
> + # Use the remote url pattern from the remote-repository file to
> + # find the local name for the remote git repository.
> + remote_name=$( (cd "$srcdir" && git remote -v) \
> + | grep "${remote_repo_pattern}" | grep \(fetch\) \
> + | awk -F '\t' '{print $1}')

I just tried it locally, this is what I get:

GNU gdb (GDB) 10.0.50.20200327-git (c13ff238f921--0)

I identifier the problem to the fact that I have two remotes that match the given
URL:

$ git remote -v | grep 'sourceware.org/git/binutils-gdb.git'
origin git://sourceware.org/git/binutils-gdb.git (fetch)
origin git://sourceware.org/git/binutils-gdb.git (push)
upstream ssh://sourceware.org/git/binutils-gdb.git (fetch)
upstream ssh://sourceware.org/git/binutils-gdb.git (push)

I just prefer to use two remotes to reduce the changes of pushing to
`upstream` by mistake. So the command above prints:

origin
upstream

And that confuses the following commands. It works better if I put a
`head -n 1` command in there:

- | grep "${remote_repo_pattern}" | grep \(fetch\) \
+ | grep "${remote_repo_pattern}" | grep \(fetch\) | head -n 1 \

That happens to work well for me, because origin/master is always the one I
keep up to date (I fetch new changes from origin). upstream/master dates
from the last time I pushed, so is outdated. Since `origin` alphabetically
comes before `upstream`, it's the one that's going to be used as the
reference point. But if my "push" remote came before `origin`, it would be
the one used as a reference point, so the version string would always show
that I am at ${some_old_commit} plus many commits on top. Not really a big
deal for me though, I can live with it.

Otherwise, it looks good to me. Thanks a lot for the extensive comments, that
makes the script much easier to follow.

Simon