[7.0.0 Release] The release branch is open; trunk is now 8.0.0

Hi everyone,

The release branch for 7.0.0 was created off trunk at r338536 earlier
today, and the trunk version was subsequently bumped to 8.0.0.

Release blockers are tracked by https://llvm.org/PR38406 Please mark
any bugs, old or new, that need to be fixed for the release as
blocking that.

To get a change committed to the branch, first commit it to trunk as
usual, and then request it to be merged -- ideally by filing a blocker
bug on https://llvm.org/PR38406, or by cc'ing me on the commit email.
(Please try not to request merges over IRC, as they're easy to miss.)

Please help with the release by notifying me about any bugs, commits,
or other issues you think might be relevant. If it's not marked as
blocking PR38406, or I'm not cc'd on an email about it, I'll probably
miss it.

What's next? In a day or two, once the branch appears reasonable
stable, release candidate 1 will be tagged and testing of that can
begin.

Thanks,
Hans

Hi all,

A few months ago I switched from using SVN for the LLVM project to using the GIT mono-repo, but I am still not particularly good at using GIT. How can I use the GIT command-line interface to select to the exact same set of sources used for the v7.0.0 branch, or for the sources at a particular SVN revision (e.g. r338536)? Is this even possible?

Thanks,

    MartinO

A few months ago I switched from using SVN for the LLVM project to using the GIT mono-repo, but I am still not particularly good at using GIT. How can I use the GIT command-line interface to select to the exact same set of sources used for the v7.0.0 branch,

Do you mean the commit that was forked to create the 7.0 branch, the
commit that was released as 7.0.0, or the current status of the 7.0
branch? In turn they'd be:

1. git merge-base master origin/release_70
2. These are stored as tags I believe, though the format has changed
and we only started recently. "git tag" lists what we have now, with
an obvious mapping to releases (for a human).
3. Just plain origin/release_70

or for the sources at a particular SVN revision (e.g. r338536)?

For now, svn revisions are stored in notes attached to each git
commit. Annoyingly they're not downloaded by default so you have to
run this once:

$ git fetch origin refs/notes/*:refs/notes/*

After that they'll come along with every "git fetch" or "git pull".
Once you have those, I personally just grep a "git log" for a revision
I'm interested in. You could package some variant of

$ git log --grep "git-svn-rev: 338839" -1

into a script pretty easily though.

Cheers.

Tim.

Thanks Tim,

I think that what I want is to track the development of the v7.0.0 release as I would previously with SVN using the head of the branch, so the current state of the branch is most relevant to me. But I also periodically like to go to a particular SVN revision on the main development sources for legacy reasons - most of my workflow for LLVM development evolved on SVN. Usually, when the branch is created, I like to archive the state of the main development sources at the revision noted in Hans Wennborg's' branch announcement (in this case r338536).

What I see now (after 'git merge-base master origin/release_70' and 'git pull') is:

  $ git branch --list
  * master
    martino

  $ git tag
  RELEASE_400/final
  RELEASE_401/final
  RELEASE_500/final
  RELEASE_501/final
  prerelease_20180108
  release_600
  release_601

My image was initialised with:

  git -v clone https://github.com/llvm-project/llvm-project-20170507/ llvm-project

but I don't see a v7.0.0 specific tag or branch - is it the 'prerelease_20180108' tag? I successfully found the commit corresponding to the SVN tag for r338536 following your instructions as:

  commit 1c1bb329bdac77e048f7831a7dded3c61021be9f
  Author: Jonas Devlieghere <jonas@devlieghere.com>

Hi Martin,

  $ git branch --list
  * master
    martino

By default "git branch" only lists local branches. "git branch -a"
will list all of them, including (for me) "remotes/origin/release_70".
If you just type "git checkout release_70" git will probably
automatically detect it and set the local branch up to track it.

but I don't see a v7.0.0 specific tag or branch - is it the 'prerelease_20180108' tag?

There won't be any 7.0.0 tags yet because we don't know what revision
it will be.

Cheers.

Tim.

From: llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org] On Behalf Of Tim
Northover via llvm-dev
Sent: Friday, August 03, 2018 9:17 AM
To: Martin J. O'Riordan
Cc: LLVM Developers Mailing List
Subject: Re: [llvm-dev] [7.0.0 Release] The release branch is open; trunk
is now 8.0.0

Hi Martin,

> $ git branch --list
> * master
> martino

By default "git branch" only lists local branches. "git branch -a"
will list all of them, including (for me) "remotes/origin/release_70".
If you just type "git checkout release_70" git will probably
automatically detect it and set the local branch up to track it.

If you're just interested in reading the branch, that works fine.
However `git llvm push` on the branch does not, at least not for me.
--paulr

Hi Tim, I missed that detail when reading my O'Reilly book on GIT :slight_smile: I now see:

$ git branch -a
  martino
  master
* release_70
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/release_30
  remotes/origin/release_31
  remotes/origin/release_32
  remotes/origin/release_33
  remotes/origin/release_34
  remotes/origin/release_35
  remotes/origin/release_36
  remotes/origin/release_37
  remotes/origin/release_38
  remotes/origin/release_39
  remotes/origin/release_40
  remotes/origin/release_50
  remotes/origin/release_60
  remotes/origin/release_70

[all the 'remotes/*' are in 'red' on my display which presumably means not local]

Thanks for your detailed instructions, very much appreciated,

  MartinO

Thanks Paul,

I won't be pushing anything to the branch, but I will merge it with my own branch so that I track the v7 stabilisation until its release.

What I have done is integrated the r338536 sources from 'master' into my branch (I have been tracking ToT up until the branch), and now I will integrate from the current state of 'release_70' until the final release of v7.0.0.

All the best,

  MartinO

Martin and Tim,

From http://llvm.org/docs/GettingStarted.html#for-developers-to-work-with-a-git-monorepo

$ git config --add remote.origin.fetch +refs/notes/commits:refs/notes/commits
(Its okay if you edit .git/config manually. Editing git/config is considered safe.)

FYI, I tried, in several years ago, generating refs/tags/rXXXXXX for each rev.
It works fine if number of tags are hundreds.

Git (and github) will be choked by thousands of tags, unfortunately.
It’s the reason why I didn’t provide refs/tags/rXXXXXX in github.

…Takumi