Skip to content

Commit

Permalink
refactor: simpler noir sync
Browse files Browse the repository at this point in the history
  • Loading branch information
ludamad0 committed Feb 5, 2024
1 parent e63bbae commit d980808
Show file tree
Hide file tree
Showing 15 changed files with 73 additions and 45 deletions.
84 changes: 56 additions & 28 deletions .github/workflows/mirror_noir_subrepo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,58 +6,86 @@ name: Mirror to noir repo
# Don't allow multiple of these running at once:
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
on:
push:
branches:
- master
paths:
- 'noir/**'
- '!noir/.gitrepo'
- ad/chore/better-noir-sync
# paths:
# - 'noir/**'
# - '!noir/.gitrepo'

jobs:
mirror_repo:
runs-on: ubuntu-latest

steps:
- name: Get noir master's last sync commit
id: last_merge_hash
uses: actions/github-script@v7
with:
script: |
// NOTE: more robust heuristic needed if aztecbot opens different kinds of PRs
const response = await github.rest.search.commits({
q: 'author:AztecBot committer:web-flow repo:noir-lang/noir sort:committer-date'
});
console.log(response.data.items);
return response.data.items[0].sha;
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}

# We push using git subrepo (https://github.com/ingydotnet/git-subrepo)
# with some logic to recover from squashed parent commits
# We push to subrepo, commit to master. The commit is needed
# to continue to replay. If we still hit issues such as this
# action failing due to upstream changes, a manual resolution
# PR with ./scripts/git_subrepo.sh pull will be needed.
# and push all Aztec commits as a single commit with metadata.
- name: Push to branch
run: |
set -xue # print commands
SUBREPO_PATH=noir
BRANCH=aztec-packages
BRANCH=aztec2-packages
# identify ourselves, needed to commit
git config --global user.name AztecBot
git config --global user.email [email protected]
if ./scripts/git_subrepo.sh push $SUBREPO_PATH --branch=$BRANCH; then
git commit --amend -m "$(git log -1 --pretty=%B) [skip ci]"
BASE_NOIR_COMMIT=`git config --file=noir/.gitrepo subrepo.commit`
BASE_AZTEC_COMMIT=`git config --file=noir/.gitrepo subrepo.parent`
# Fix PR branch
git clone https://x-access-token:${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}@github.com/noir-lang/noir.git noir-repo
cd noir-repo
git checkout $BRANCH || git checkout -b $BRANCH
git reset --hard "$BASE_NOIR_COMMIT"
# Reset our branch to our expected target
git push origin $BRANCH --force
cd ..
# Get the last merged PR
LAST_MERGED_PR_HASH=`gh pr list --repo=noir-lang/noir --state merged --head aztec-packages --json headRefOid --jq=.[0].headRefOid`
COMMIT_HEURISTIC=$(git log -p -S"$LAST_MERGED_PR_HASH" --reverse --source -- noir/.gitrepo | grep -m 1 '^commit' | awk '{print $2}' || true)
if [[ " $COMMIT_HEURISTIC" = "" ]] ; then
COMMIT_HEURISTIC=$BASE_AZTEC_COMMIT
fi
MESSAGE=$(git log --pretty=format:"%s" $COMMIT_HEURISTIC..HEAD -- noir/ ':!noir/.gitrepo' | grep -v 'git subrepo || true')
# Fix Aztec PR links
MESSAGE=$(echo "$MESSAGE" | sed -E 's/\(#([0-9]+)\)/(https:\/\/github.com\/AztecProtocol\/aztec-packages\/pull\/\1)/g')
git commit --allow-empty -m"chore: Sync to noir-lang/noir" -m"$MESSAGE"
COMMIT=$(git rev-parse HEAD)
# Now push to it with subrepo with computed commit messages
if ./scripts/git_subrepo.sh push $SUBREPO_PATH --squash --branch=$BRANCH; then
git reset $COMMIT
git commit --amend -am "$(git log -1 --pretty=%B) [skip ci]"
git push
else
echo "Problems syncing noir. We may need to pull the subrepo."
exit 1
fi
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
repository: noir-lang/noir
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
- name: Create PR for Aztec Branch
continue-on-error: true
uses: repo-sync/pull-request@v2
with:
github_token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
pr_title: 'feat: Sync commits from `aztec-packages`'
pr_body: 'Development from [aztec-packages](https://github.com/AztecProtocol/aztec-packages).'
destination_branch: 'master'
source_branch: 'aztec-packages'
# Formatted for updating the PR, overrides for release-please commit message parsing
PR_BODY="""BEGIN_COMMIT_OVERRIDE
$MESSAGE
END_COMMIT_OVERRIDE"""
export GH_TOKEN="${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}"
PR_URL=$(gh pr list --repo noir-lang/noir --head aztec2-packages --json url --jq ".[0].url")
if [[ "$PR_URL" == "" ]]; then
gh pr create --repo noir-lang/noir --title "feat: Sync from aztec-packages" --body "$PR_BODY" --base master --head aztec2-packages
else
gh pr edit "$PR_URL" --body "$PR_BODY"
fi
4 changes: 2 additions & 2 deletions noir/.gitrepo
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[subrepo]
remote = https://github.com/noir-lang/noir
branch = aztec-packages
commit = 9a70040211d205f472aa31924649c2fef999eb49
parent = 9c965a7c9e652dfeaba2f09152e5db287407473d
commit = 0205d3b4ad0cf5ffd775a43eb5af273a772cf138
parent = 85324cc14b637f0c1347d6c21235b57b0628f6eb
method = merge
cmdver = 0.4.6
2 changes: 1 addition & 1 deletion scripts/git-subrepo/Intro.pod
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ Submodules tend to receive a lot of bad press. Here's some of it:

=item * L<http://ayende.com/blog/4746/the-problem-with-git-submodules>

=item * L<http://somethingsinistral.net/blog/git-submodules-are-probably-not-the-answer/>
=item * L<https://web.archive.org/web/20171101202911/http://somethingsinistral.net/blog/git-submodules-are-probably-not-the-answer/>

=item * L<http://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/>

Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/doc/intro-to-subrepo.swim
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ article is about.
Submodules tend to receive a lot of bad press. Here's some of it:

* http://ayende.com/blog/4746/the-problem-with-git-submodules
* http://somethingsinistral.net/blog/git-submodules-are-probably-not-the-answer/
* https://web.archive.org/web/20171101202911/http://somethingsinistral.net/blog/git-submodules-are-probably-not-the-answer/
* http://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/

A quick recap of some of the good and bad things about submodules:
Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/ext/bashplus/bin/bash+
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Copyright (c) 2013-2020 Ingy döt Net
#------------------------------------------------------------------------------

set -eu
set -e
shopt -s compat31 &>/dev/null || true

#------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/ext/bashplus/lib/bash+.bash
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# Copyright (c) 2013-2020 Ingy döt Net

set -eu
set -e

[[ ${BASHPLUS_VERSION-} ]] && return 0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Copyright (c) 2013-2020 Ingy döt Net
#------------------------------------------------------------------------------

set -eu
set -e
shopt -s compat31 &>/dev/null || true

#------------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# Copyright (c) 2013-2020 Ingy döt Net

set -eu
set -e

[[ ${BASHPLUS_VERSION-} ]] && return 0

Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/lib/git-subrepo.d/help-functions.bash
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# DO NOT EDIT. This file generated by pkg/bin/generate-help-functions.pl.

set -eu
set -e

help:all() {
cat <<'...'
Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/note/init-test
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash

set -ex
cat $0 # Show this script in the output
Expand Down
4 changes: 2 additions & 2 deletions scripts/git-subrepo/note/recreate-rebase-conflict.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
#!/bin/bash

set -eu
set -e
set -x

# Make a directory to work in:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash

set -ex

Expand All @@ -24,6 +24,6 @@ git clone repo1 repo3
git subrepo clone ../repo2 subrepo
bash
git rebase -i HEAD^
git log -p
git log -p
ls
)
2 changes: 1 addition & 1 deletion scripts/git-subrepo/note/test-subrepo-push.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash

set -ex

Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/note/test.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/bash

set -x

Expand Down
2 changes: 1 addition & 1 deletion scripts/git-subrepo/pkg/bin/generate-help-functions.pl
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ sub write_start {
# DO NOT EDIT. This file generated by pkg/bin/generate-help-functions.pl.
set -eu
set -e
...
}

Expand Down

0 comments on commit d980808

Please sign in to comment.