From owner-svn-ports-head@freebsd.org Mon Sep 7 12:23:52 2015 Return-Path: Delivered-To: svn-ports-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 657179CC593; Mon, 7 Sep 2015 12:23:52 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 395D212C5; Mon, 7 Sep 2015 12:23:52 +0000 (UTC) (envelope-from mat@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t87CNqSk027243; Mon, 7 Sep 2015 12:23:52 GMT (envelope-from mat@FreeBSD.org) Received: (from mat@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t87CNqQc027242; Mon, 7 Sep 2015 12:23:52 GMT (envelope-from mat@FreeBSD.org) Message-Id: <201509071223.t87CNqQc027242@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mat set sender to mat@FreeBSD.org using -f From: Mathieu Arnold Date: Mon, 7 Sep 2015 12:23:52 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r396268 - head/Tools/scripts X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Sep 2015 12:23:52 -0000 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: " +[ $# -le 2 ] && err "$(basename $0) requires at least 2 arguments: [...]" 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}"