awk: document updating
Fill in all the details to the standard process so they are hand in one place and don't need to be re-remembered or rediscovered for the next import. Sponsored by: Netflix
This commit is contained in:
parent
818edf67bd
commit
fd2a4a31d9
58
contrib/one-true-awk/FREEBSD-upgrade
Normal file
58
contrib/one-true-awk/FREEBSD-upgrade
Normal file
@ -0,0 +1,58 @@
|
||||
Notes on upgrading awk from upstream
|
||||
|
||||
FreeBSD imports awk from the one true awk github project. This is the blessed
|
||||
successor to Brian Kernighan's efforts to maintain awk after he left Lucent.
|
||||
|
||||
git@github.com:onetrueawk/awk.git
|
||||
|
||||
We also track the bsd-features branch. This is a branch that takes the
|
||||
traditional one true awk and adds features that the BSD projects have added over
|
||||
the years that are useful, but not too over the top (like bit functions).
|
||||
|
||||
The typical update cycle goes something like:
|
||||
|
||||
(1) Create a work tree for the vendor/one-true-awk branch
|
||||
% cd freebsd-main
|
||||
% git worktree create ../ota vendor/one-true-awk
|
||||
(2) Update the onetrueawk github
|
||||
% cd ../awk
|
||||
% git pull --rebase
|
||||
% git branch --show-current
|
||||
bsd-features
|
||||
% git show-ref HEAD
|
||||
f9affa922c5e074990a999d486d4bc823590fd93 refs/remotes/origin/HEAD
|
||||
(3) Copy that to the vendor branch and push upstream
|
||||
% rm -rf ../ota/* # trailing /* is important
|
||||
% cp -a * ../ota
|
||||
% cd ../ota
|
||||
% git add *
|
||||
% git commit -m"Import awk YYYYMMDD hash f9affa922c5e" # 12 places
|
||||
% git commit --amend
|
||||
<insert the relevant bits from the FIXES file>
|
||||
% diff -ur ../awk .
|
||||
# Sanity check to make sure it looks good. The vendor branch should
|
||||
# contain the unaltered sources from upstream since it's active
|
||||
# again (for a while we were importing submitted patches to the
|
||||
# vendor branch given the long lag with the old upstream, but no more)
|
||||
% git tag -a -s vendor/one-true-awk/f9affa92 # 8 places
|
||||
<enter gpg password>
|
||||
% git push --follow-tags freebsd vendor/one-true-awk
|
||||
(4) Merge this into main
|
||||
% git subtree merge -P contrib/one-true-awk vendor/one-true-awk
|
||||
# resolve any conflicts and commit
|
||||
# Be sure to use the same or similar commit message as you did for
|
||||
# the import. If you import multiple versions before merging to head
|
||||
# you may need to combine the messages. Also, if there's more than
|
||||
# a screen of changes, you may want to abstract them down into an
|
||||
# easy to digest summary.
|
||||
% cd usr.bin/awk
|
||||
% sudo make check
|
||||
# make sure all the tests pass
|
||||
% cd ../..
|
||||
# awk is a build tool, so test the builds
|
||||
% make buildworld / buildkernel for amd64, armv7, i386 and aarch64 (or
|
||||
make universe/tinderbox if there's a lot of changes).
|
||||
% git push freebsd
|
||||
(5) Oops, lost the race to push while testing, the following will rebase things
|
||||
% git fetch freebsd
|
||||
% git rebase --rebase-merges -i freebsd/main
|
Loading…
Reference in New Issue
Block a user