diff --git a/crypto/openssh/FREEBSD-upgrade b/crypto/openssh/FREEBSD-upgrade --- a/crypto/openssh/FREEBSD-upgrade +++ b/crypto/openssh/FREEBSD-upgrade @@ -1,6 +1,11 @@ FreeBSD maintainer's guide to OpenSSH-portable ============================================== + These instructions assume you have a clone of the FreeBSD git repo + main branch in src/freebsd/main, and will store vendor trees under + src/freebsd/vendor/. In addition, this assumes there is a "freebsd" + origin pointing to git(repo).freebsd.org/src.git. + 00) Make sure your mail spool has plenty of free space. It'll fill up pretty fast once you're done with this checklist. @@ -15,40 +20,38 @@ $ tar xf openssh-X.YpZ.tar.gz -04) Copy to the vendor directory: +04) Copy to a vendor branch: - $ svn co svn+ssh://repo.freebsd.org/base/vendor-crypto/openssh/dist - $ rsync --archive --delete openssh-X.YpZ/ dist/ + $ cd src/freebsd/main + $ git worktree add ../vendor/openssh freebsd/vendor/openssh + $ cd ../vendor/openssh + $ rsync --archive --delete --exclude=.git /path/to/openssh-X.YpZ/ ./ 05) Take care of added / deleted files: - $ svn rm $(svn stat dist | awk '$1 == "!" { print $2 }') - $ svn add --no-auto-props $(svn stat dist | awk '$1 == "?" { print $2 }') + $ git add -A 06) Commit: - $ svn commit -m "Vendor import of OpenSSH X.YpZ." dist + $ git commit -m "Vendor import of OpenSSH X.YpZ" 07) Tag: - $ svn copy -m "Tag OpenSSH X.YpZ." \ - svn+ssh://repo.freebsd.org/base/vendor-crypto/openssh/dist \ - svn+ssh://repo.freebsd.org/base/vendor-crypto/openssh/X.YpZ + $ git tag -a -m "Tag OpenSSH X.YpZ" vendor/openssh/X.YpZ 08) Check out head and run the pre-merge script, which strips our RCS tags from files that have them: - $ svn co svn+ssh://repo.freebsd.org/base/head - $ cd head/crypto/openssh + $ cd src/freebsd/main/crypto/openssh $ sh freebsd-pre-merge.sh 09) Merge from the vendor branch: - $ svn merge -cNNNNNN \^/vendor-crypto/openssh/dist . + $ git subtree merge -P crypto/openssh vendor/openssh A number of files have been deleted from FreeBSD's copy of ssh, including rendered man pages (which have a .0 extension). When - svn prompts for these deleted files during the merge, choose 'r' + git prompts for these deleted files during the merge, choose 'd' (leaving them deleted). 0A) Resolve conflicts. Remember to bump the version addendum in @@ -57,8 +60,7 @@ 0B) Diff against the vendor branch: - $ svn diff --no-diff-deleted --no-diff-added \ - --ignore-properties \^/vendor-crypto/openssh/X.YpZ . + $ git diff --diff-filter=M vendor/openssh/X.YpZ HEAD:crypto/openssh Files that have modifications relative to the vendor code, and only those files, must have the svn:keywords property set to @@ -70,6 +72,9 @@ $ sh freebsd-post-merge.sh + These tags are not used with git, but we will leave them in place as + long as svn-based FreeBSD 11.x and 12.x are supported. + 0D) Run the configure script: $ sh freebsd-configure.sh @@ -77,7 +82,7 @@ 0E) Review changes to config.h very carefully. Note that libwrap should not be defined in config.h; as of - r311585 it is conditional on MK_TCP_WRAPPERS. + r311585 (233932cc2a60) it is conditional on MK_TCP_WRAPPERS. 0F) If source files have been added or removed, update the appropriate makefiles to reflect changes in the vendor's Makefile.in. diff --git a/crypto/openssh/freebsd-pre-merge.sh b/crypto/openssh/freebsd-pre-merge.sh --- a/crypto/openssh/freebsd-pre-merge.sh +++ b/crypto/openssh/freebsd-pre-merge.sh @@ -5,9 +5,8 @@ :>keywords :>rcsid -svn list -R | grep -v '/$' | \ +git ls-files | \ while read f ; do - svn proplist -v $f | grep -q 'FreeBSD=%H' || continue egrep -l '^(#|\.\\"|/\*)[[:space:]]+\$FreeBSD[:\$]' $f >>keywords egrep -l '__RCSID\("\$FreeBSD[:\$]' $f >>rcsid done