This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH]: New script for contrib


Daniel Berlin wrote:
This is a slight modification of the find-start-rev script that richard
guenther sent me and i resent to gcc@.

I'm sure somebody who actually does shell programming "for real" can
make this better



------------------------------------------------------------------------

2005-10-31  Daniel Berlin  <dberlin@dberlin.org>
	    Richard Guenther <rguenther@suse.de>

	* svn-find-start-rev: New file.
Index: svn-find-start-rev
===================================================================
--- svn-find-start-rev	(revision 0)
+++ svn-find-start-rev	(revision 0)
@@ -0,0 +1,37 @@
+# Find the version in which a repository path came into existence
+
+usage () {
+cat <<EOF
+  Usage:
+      svn-find-start-rev  <url> <directory or file path in repository>
+
+      Example:
+         svn-find-start-rev svn://gcc.gnu.org/svn/gcc branches/gcc-3_4-branch
+EOF
+exit 1
+}
+
+test $# -lt 2 && usage
+
+rev=`svn info $1/trunk | grep '^Revision:' | sed -e 's/Revision: //'`
+echo trunk is at rev $rev
+width=$[$rev / 2]
+rev=$[$rev - $width]
+echo "Starting with $rev, $width"
+while true; do
+  width=$[$width / 2]
+  echo svn info $1/$2@$rev
+  svn info $1/$2@$rev 2>&1 | grep "Not a valid URL"
+  if ! test $? == 0; then
+    echo  - exists.
+    rev=$[$rev - $width]
+  else
+    rev=$[$rev + $width]
+  fi
+  if test $width == 0; then
+    break;
+  fi
+done
+startrev=$[$rev + 1]
+echo "$2 started at $rev"
+

For the record, the two non portable constructs I see are


- you should use `expr ... ` instead of $[...]

- you should not use ! test $? == 0

in this case, $? is not necessary at all

    if svn info $1/$2@$rev 2>&! | grep 'Not a valid URL'; then
      # grep succeeded
      rev=`expr $rev + $width`
    else
      # grep failed
      echo - exists.
      rev=`expr $rev - $width`
    fi

Paolo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]