[2684] Initial svn2bzr revision.

Robert Millan <[email protected]> Fri, 06 Nov 2009 22:03:58 +0000
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 2684
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2684
Author:   robertmh
Date:     2009-11-06 22:03:57 +0000 (Fri, 06 Nov 2009)
Log Message:
-----------
Initial svn2bzr revision.

Added Paths:
-----------
    people/robertmh/
    people/robertmh/svn2bzr/
    people/robertmh/svn2bzr/README
    people/robertmh/svn2bzr/bzr_timestamp_override.diff
    people/robertmh/svn2bzr/commit-from-log
    people/robertmh/svn2bzr/process_commit
    people/robertmh/svn2bzr/revert-svn-log-order
    people/robertmh/svn2bzr/svn2bzr

Added: people/robertmh/svn2bzr/README
===================================================================
--- people/robertmh/svn2bzr/README	                        (rev 0)
+++ people/robertmh/svn2bzr/README	2009-11-06 22:03:57 UTC (rev 2684)
@@ -0,0 +1,3 @@
+Apply bzr_timestamp_override.diff, then use svn2bzr <url> <output-dir>.
+
+The other scripts are helpers used by svn2bzr.

Added: people/robertmh/svn2bzr/bzr_timestamp_override.diff
===================================================================
--- people/robertmh/svn2bzr/bzr_timestamp_override.diff	                        (rev 0)
+++ people/robertmh/svn2bzr/bzr_timestamp_override.diff	2009-11-06 22:03:57 UTC (rev 2684)
@@ -0,0 +1,16 @@
+
+Submitted in http://bugs.launchpad.net/bzr/+bug/283501
+
+--- /usr/share/pyshared/bzrlib/commit.py.bak	2009-11-06 21:11:37.000000000 +0000
++++ /usr/share/pyshared/bzrlib/commit.py	2009-11-06 21:17:10.000000000 +0000
+@@ -273,6 +273,10 @@
+         else:
+             self.specific_files = None
+             
++        v = os.environ.get('BZR_TIMESTAMP_OVERRIDE')
++        if v:
++            timestamp = eval (v)
++
+         self.allow_pointless = allow_pointless
+         self.revprops = revprops
+         self.message_callback = message_callback

Added: people/robertmh/svn2bzr/commit-from-log
===================================================================
--- people/robertmh/svn2bzr/commit-from-log	                        (rev 0)
+++ people/robertmh/svn2bzr/commit-from-log	2009-11-06 22:03:57 UTC (rev 2684)
@@ -0,0 +1,65 @@
+#!/bin/bash -e
+#
+# Copyright (C) 2009  Robert Millan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+url="$1"
+dash_line="------------------------------------------------------------------------"
+
+die ()
+{
+  echo "$@" >&2
+  exit 1
+}
+
+process_commit=$(which process_commit || echo `dirname $0`/process_commit)
+
+bzr init
+
+st=0
+while read line ; do
+  case ${st} in
+    0)
+      if [ "${line}" != "${dash_line}" ] ; then
+        die "Unexpected input"
+      fi
+      st=1
+    ;;
+    1)
+      revision=`echo "${line}" | sed -e "s/^r\([0-9]*\) .*/\1/"`
+      username=`echo "${line}" | sed -e "s/^[^|]*| \([^ ]*\) .*/\1/"`
+      date=`echo "${line}" | sed -e "s/^[^|]*|[^|]*| \([^ ]* [^ ]* [^ ]*\) .*/\1/"`
+      date=`date +%s -d "${date}"`
+      unset message
+      read # empty line
+      st=2
+    ;;
+    2)
+      if [ "${line}" == "${dash_line}" ] ; then
+        ${process_commit} ${url} ${revision} ${username} "${date}" "${message}"
+        st=1
+        continue
+      fi
+      if [ "${message}" ] ; then
+        message="${message}
+${line}"
+      else
+        message="${line}"
+      fi
+    ;;
+  esac
+done
+
+exit 0


Property changes on: people/robertmh/svn2bzr/commit-from-log
___________________________________________________________________
Added: svn:executable
   + *

Added: people/robertmh/svn2bzr/process_commit
===================================================================
--- people/robertmh/svn2bzr/process_commit	                        (rev 0)
+++ people/robertmh/svn2bzr/process_commit	2009-11-06 22:03:57 UTC (rev 2684)
@@ -0,0 +1,72 @@
+#!/bin/bash -e
+#
+# Copyright (C) 2009  Robert Millan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+url="$1"
+shift
+revision="$1"
+previous="$((${revision}-1))"
+shift
+username="$1"
+shift
+date="$1"
+shift
+message="$1"
+shift
+
+tmp=`mktemp`
+tmpdir=`mktemp -d`
+trap "rm -rf $tmp $tmpdir" EXIT
+
+die ()
+{
+  echo "$@" >&2
+  exit 1
+}
+
+echo
+echo "r${revision} | ${username} | `date -d @${date}` | `echo ${message} | cut -c -30`"
+
+if svn diff -r ${previous}:${revision} ${url} > ${tmp} ; then
+  patch -p0 < ${tmp} > /dev/null
+else
+  cat << EOF >&2
+
+It's OK, will assume ${revision} is the first revision.
+
+Exporting complete source tree for r${revision} ...
+EOF
+  svn export -r ${revision} ${url} ${tmpdir}/export > /dev/null
+  cp -a ${tmpdir}/export/* ./
+fi
+
+# This excludes zero-size files, but I can't think of a better way
+find . -type f -size 0 | grep -v "^\./\.bzr/" | while read i ; do
+  bzr rm --force --quiet "$i"
+done
+
+# Register new files (if they were added)
+bzr add --quiet
+
+# Actual commit
+if ! grep -q BZR_TIMESTAMP_OVERRIDE /usr/share/pyshared/bzrlib/commit.py ; then
+  echo "WARNING: unsupported BZR_TIMESTAMP_OVERRIDE, won't override timestamps" >&2
+fi
+if ! bzr diff --quiet ; then	# Avoid pointless commits
+  BZR_TIMESTAMP_OVERRIDE=${date} bzr commit -m "${message}" --author=${username}
+fi
+
+exit 0


Property changes on: people/robertmh/svn2bzr/process_commit
___________________________________________________________________
Added: svn:executable
   + *

Added: people/robertmh/svn2bzr/revert-svn-log-order
===================================================================
--- people/robertmh/svn2bzr/revert-svn-log-order	                        (rev 0)
+++ people/robertmh/svn2bzr/revert-svn-log-order	2009-11-06 22:03:57 UTC (rev 2684)
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# Copyright (C) 2009  Robert Millan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+dash_line="------------------------------------------------------------------------"
+
+die ()
+{
+  echo "$@" >&2
+  exit 1
+}
+
+st=0
+(while read line ; do
+  case ${st} in
+    0)
+      if [ "${line}" != "${dash_line}" ] ; then
+        die "Unexpected input"
+      fi
+      st=1
+    ;;
+    1)
+      unset message
+      info_line="${line}"
+      read # empty line
+      st=2
+    ;;
+    2)
+      if [ "${line}" == "${dash_line}" ] ; then
+        echo "${dash_line}"
+        echo "${message}"
+        echo ""
+        echo "${info_line}"
+        st=1
+        continue
+      fi
+      if [ "${message}" ] ; then
+        message="${line}
+${message}"
+      else
+        message="${line}"
+      fi
+    ;;
+  esac
+done ; echo "${dash_line}") | tac
+
+exit 0


Property changes on: people/robertmh/svn2bzr/revert-svn-log-order
___________________________________________________________________
Added: svn:executable
   + *

Added: people/robertmh/svn2bzr/svn2bzr
===================================================================
--- people/robertmh/svn2bzr/svn2bzr	                        (rev 0)
+++ people/robertmh/svn2bzr/svn2bzr	2009-11-06 22:03:57 UTC (rev 2684)
@@ -0,0 +1,37 @@
+#!/bin/bash -e
+#
+# Copyright (C) 2009  Robert Millan
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+url="$1"
+out="$2"
+
+die ()
+{
+  echo "$@" >&2
+  exit 1
+}
+
+if [ "${out}" = "" ] ; then
+  die "Usage: $0 <url> <output-dir>"
+fi
+
+process_commit=$(which process_commit || echo `dirname $0`/process_commit)
+revert_svn_log_order=$(which revert-svn-log-order || echo `dirname $0`/revert-svn-log-order)
+commit_from_log=$(which commit-from-log || echo `dirname $0`/commit-from-log)
+
+(cd ${out} && svn log ${url} | ${revert_svn_log_order} | ${commit_from_log} ${url})
+
+exit 0


Property changes on: people/robertmh/svn2bzr/svn2bzr
___________________________________________________________________
Added: svn:executable
   + *