On Sat 19 Dec 2020 at 20:25:03 +0100, Rhialto wrote: > I have set up https://gitlab.com/Rhialto/zoo with 2.10 and pl1. > I could add the patches one by one, and check if FreeBSD has any extra > patches, and use that as upstream... https://gitlab.com/Rhialto/zoo/-/archive/zoo-2.10pl1/zoo-zoo-2.10pl1.tar.bz2 could be used as a new upstream, if desired. I have now added the history of all pkgsrc patches to this repo. I used the git mirror of pkgsrc for this, because it has already nicely detected the chronological order of the commits in the patches directory. Then I basically used the script below to generate the history. I was looking for tools that would help me with detecting the changes of a history of diff files (such as our pkgsrc diffs). I was pointed at "interdiff" from devel/patchutils: "Interdiff generates an incremental patch from two patches against a common source." Unfortunately, the incremental diffs I got from interdiff didn't all apply cleanly (and the process stopped when one failed completely). So I used a different, less subtle approach. https://gitlab.com/Rhialto/zoo/-/archive/zoo-2.10pl1+pkgsrc015/zoo-zoo-2.10pl1+pkgsrc015.tar.bz2 could be used as a "fresh" upstream that needs no patches. #!/bin/sh set -e -x WORK=$PWD ZOO_HIST=$WORK/zoo # zoo repo that gets updated ZOO_BASE=$WORK/zoo.base # unchanging git clone of 2.10pl1 PKGSRC=$WORK/pkgsrc # git clone of pkgsrc PKGSRC_ZOO=$PKGSRC/archivers/zoo BRANCH=HEAD cd $PKGSRC_ZOO/patches git checkout $BRANCH git log --oneline . >$WORK/commit-ids.backward cd $PKGSRC cat $WORK/commit-ids.backward | while read commitid rest do authordate=$(git show --no-patch --format=format:%aI $commitid) author=$(git show --no-patch --format="format:%aN <%aE>" $commitid) message=$(git show --no-patch --format="format:%s" $commitid) git checkout $commitid file=version.${authordate} # .${commitid} cp -r $PKGSRC_ZOO $WORK/${file}.dir echo $author > $WORK/${file}.author echo $message > $WORK/${file}.msg done cd $WORK # Note that this goes forward through history due to the sorting of the dates. prev="" for d in version.*.dir do cat $WORK/${d}/patches/patch-* > $WORK/${d}/patches-all date=$(echo $d | cut -d. -f 2) cd $ZOO_HIST rm -f * cp $ZOO_BASE/* . patch < $WORK/${d}/patches-all 2>&1 | tee $WORK/patch.out rm -f *.orig #echo "hit enter..."; read dummy git add . git commit \ --author="$(cat $WORK/${d%.dir}.author)" \ --date="$date" \ --message="$(cat $WORK/${d%.dir}.msg)" \ --message="$(cat $WORK/patch.out)" || true prev=$d #echo "hit enter..."; read dummy done -Olaf. -- Olaf 'Rhialto' Seibert -- rhialto at falu dot nl ___ Anyone who is capable of getting themselves made President should on \X/ no account be allowed to do the job. --Douglas Adams, "THGTTG"
Attachment:
signature.asc
Description: PGP signature