#!/bin/bash -euE . pbs-plumb-shlib cmd=${0##*/} usage() { echo "Usage: $cmd [OPTIONS] REPOSITORY OLDPACKAGE REPO/NEWPACKAGE" echo 'Forks a package.' echo '' echo 'To fork a local package, (for example, making `pcr/emacs-lucid`' echo 'from `pcr/emacs-lucid`), the repository is the local filesystem,' echo 'so use `./`' echo '' echo ' $cmd ./ emacs pcr/emacs-lucid' echo '' echo 'This forks the branch `packages/emacs` into a new branch' echo '`packages/emacs-lucid`, creates the file `pbstrack` in it, and' echo 'checks it out as a git submodule to the directory ' echo '`prc/emacs-lucid`.' echo '' echo 'Use `pbs-merge` to pull updates from the original package.' echo '' echo 'Options:' echo ' -h Show this message' } main() { while getopts 'h' arg; do case $arg in h) usage; return 0;; *) usage; return 1;; esac done shift $(($OPTIND - 1)) if [[ $# != 3 ]]; then usage return 1 fi local repository=$1 local oldpackage=$2 local dest=$3 local newpackage="${dest##*/}" cdto_pbs-root git submodule add -b "packages/${oldpackage}" "${repository}" "${dest}" cd "${dest}" git checkout -b "packages/${newpackage}" echo "${repository} packages/${oldpkackage}" > pbstrack git add pbstrack git commit -m "Fork package from ${repository} ${oldpackage} to ${dest}" } main "$@"