Date: Mon, 7 Sep 2015 12:23:52 +0000 (UTC) From: Mathieu Arnold <mat@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r396268 - head/Tools/scripts Message-ID: <201509071223.t87CNqQc027242@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mat Date: Mon Sep 7 12:23:51 2015 New Revision: 396268 URL: https://svnweb.freebsd.org/changeset/ports/396268 Log: Support merging multiple revisions in one go with mfh. Sponsored by: Absolight Differential Revision: https://reviews.freebsd.org/D3553 Modified: head/Tools/scripts/mfh Modified: head/Tools/scripts/mfh ============================================================================== --- head/Tools/scripts/mfh Mon Sep 7 12:23:08 2015 (r396267) +++ head/Tools/scripts/mfh Mon Sep 7 12:23:51 2015 (r396268) @@ -55,12 +55,17 @@ ask() { return 1 } -[ $# -ne 2 ] && err "$(basename $0) requires 2 arguments: <branch> <revnumber>" +[ $# -le 2 ] && err "$(basename $0) requires at least 2 arguments: <branch> <revnumber> [<revnumber>...]" branch=$1 -rev=${2##r} # remove a leading "r" -case ${rev} in -''|*[!0-9]*) err "revision should be a number" ;; -esac +shift +revs="" +for rev in $@ +do + rev=${rev##r} # remove a leading "r" + case ${rev} in + ''|*[!0-9]*) err "revision \"${rev}\" should be a number" ;; + esac +done : ${svnserver:="svn.FreeBSD.org"} @@ -77,24 +82,39 @@ dir=$(mktemp -d /tmp/merge.XXXXXX) cd "${dir}" "${svn}" co --depth=empty svn+ssh://${svnserver}/ports/branches/"${branch}" filelist="" -# svn:// is faster than svn+ssh://. Use it wherever it's possible. -for f in $("${svn}" diff --summarize -c ${rev} svn://${svnserver}/ports/head); do - case ${f} in - */*) ;; - *)continue;; - esac - f=${f#*/ports/head/} - f=${f%/*} - filelist="${filelist}${LF}${f}" + +echo -n "MFH:" > commit.txt +for rev in $@ +do + rev=${rev##r} + echo -n " r${rev}" >> commit.txt +done +echo >> commit.txt +for rev in $@ +do + rev=${rev##r} + # svn:// is faster than svn+ssh://. Use it wherever it's possible. + for f in $("${svn}" diff --summarize -c r${rev} svn://${svnserver}/ports/head); do + case ${f} in + */*) ;; + *)continue;; + esac + f=${f#*/ports/head/} + f=${f%/*} + filelist="${filelist}${LF}${f}" + done + "${svn}" log -r${rev} svn://${svnserver}/ports/head | sed '1,2d;$d;/^MFH:/d' \ + | sed '$d' >> commit.txt done filelist=$(printf '%s\n' "${filelist}" | sort -u) -echo "MFH: r${rev}" > commit.txt -"${svn}" log -r${rev} svn://${svnserver}/ports/head | sed '1,2d;$d;/^MFH:/d' \ - | sed '$d' >> commit.txt "${svn}" up --parents $(printf '%s\n' $filelist \ | sed "s}^}${branch}/}") "${svn}" up --quiet "${branch}" -"${svn}" merge -c r${rev} ^/head/ "${branch}" +for rev in $@ +do + rev=${rev##r} + "${svn}" merge -c r${rev} ^/head/ "${branch}" +done "${svn}" up --quiet "${branch}" "${svn}" status "${branch}" "${svn}" diff "${branch}"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509071223.t87CNqQc027242>