Skip site navigation (1)Skip section navigation (2)
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>