Index: SubversionSCM.java
===================================================================
--- SubversionSCM.java	(revision 38917)
+++ SubversionSCM.java	(working copy)
@@ -497,14 +497,14 @@
         try {
             Map<String,Long> revisions = parseRevisionFile(build);
             if(svnLocations.length==1) {
-                Long rev = revisions.get(svnLocations[0].remote);
+                Long rev = revisions.get(getPlainRemoteUrl(svnLocations[0].remote));
                 if(rev!=null) {
                     env.put("SVN_REVISION",rev.toString());
                     env.put("SVN_URL",svnLocations[0].getURL());
                 }
             } else if(svnLocations.length>1) {
                 for(int i=0;i<svnLocations.length;i++) {
-                    Long rev = revisions.get(svnLocations[i].remote);
+                    Long rev = revisions.get(getPlainRemoteUrl(svnLocations[i].remote));
                     if(rev!=null) {
                         env.put("SVN_REVISION_"+(i+1),rev.toString());
                         env.put("SVN_URL_"+(i+1),svnLocations[i].getURL());
@@ -518,6 +518,29 @@
     }
 
     /**
+    * Transforms an svn url into a plain url.
+    * We look for an @ char in the case of http://svnserver/repos@HEAD or
+    * http://svnserver@rev and remove @rev/@HEAD as only the first part of the URL is used in
+    * the map for pulling out the revisions.
+    * I.e the map will only contain http://svnserver/repos which is what we mean by "plain" url.
+    */
+    private String getPlainRemoteUrl(String aRemoteUrl)
+    {
+        String tmpRemote = aRemoteUrl;
+        if(tmpRemote!=null)
+        {
+            // Look for the char
+            int atPos = tmpRemote.lastIndexOf('@');
+            if(atPos!=-1)
+            {
+                // Strip everything after it
+                tmpRemote = tmpRemote.substring(0, atPos);
+            }
+        }
+        return tmpRemote;
+    }
+
+    /**
      * Called after checkout/update has finished to compute the changelog.
      */
     private boolean calcChangeLog(AbstractBuild<?,?> build, File changelogFile, BuildListener listener, List<External> externals) throws IOException, InterruptedException {