Date: Mon, 6 May 2019 01:15:46 -0400 From: Bob Bernstein <poo...@ruptured-duck.com> Message-ID: <20190506051546.GA20307@debian.localdomain>
| Somehow I like the cp idea. If I understand, any needed | new instances of the CVS/ROOT file will be provided by my | new repository, and not require any tweaking, yes? By cvs when it fetched the new directories, yes. No tweaking needed unl;ess you want to switch to some different repo (and note, only switching between mirror repos will work properly this way). | I don't feel competent to author a shell script Shell scripts are just the commands you would type into any shell, but put in a file instead.. | Can someone suggest what would work? The first thing you need is to get pkgsrc/CVS/Root correct. I don't use anoncvs (I have made mirror copies of it and used them instead, but by doing that the value I have in Root is different than you will want). But I am sure someone can tell you. Then you could use something like #! /bin/sh v= while getopts p opt do case "$opt" in v) v=-print;; *) printf "Usage: $0 [-v] directory\n" >&2 exit 1 ;; esac done shift $((OPTIND - 1)) test "$#" -eq 1 || { printf "Usage: $0 [-v] directory\n" >&2 exit 1 } cd "$1" || exit 1 test -s CVS/Root || { printf "No CVS/Root in $1\n" >&2 exit 1 } printf "Will update tree at %s to use %s\nOK ? " \ "$1" "$(cat CVS/Root)" read ans || exit 1 case "$ans" in [yY]*) ;; *) exit 1; esac find . \( -path ./CVS -prune \) -o \ \( -path '*/CVS/Root' $v -exec cp CVS/Root {} \; \) All but the final (wrapped) line is just error checking etc... Put that (minue the leading tab) in a file (pick a name) and run it as sh name /path/to/pkgsrc/tree/to/change after having updated the CVS/Root file first. Or add the -v flag between name and the path and it will print each file name as it is updated (which could also be done using cp's -v switch rather than find's -print). You can also turn on execute permission on the file and put it somewhere in your $PATH and just run "name" as a command if you like. (I hope it is obvious that "name" in all of this is the filename you picked - using "name" literally would be a bizarrely weird choice). kre