#!/bin/bash set -e usage () { echo >&2 'usage: cvs-adjustroot OLD NEW'; exit 1; } case "$#.$1" in 4.--reinvoke) reinvoke=true; shift ;; *.-*) usage ;; 2.*) reinvoke=false ;; 1.*) usage ;; 0.*) usage ;; *) usage ;; esac old="$1"; shift new="$1"; shift if $reinvoke; then filename="$1"; cmp -- "$filename" <(printf "%s\n" "$old") printf "%s\n" "$new" >"$filename".new mv -f -- "$filename".new "$filename" exit 0 fi find -path '*/CVS/Root' -exec cvs-adjustroot --reinvoke "$old" "$new" '{}' ';'