Implemented a workaround for a bug in recent pysvn versions.

Thu, 05 Dec 2013 18:56:14 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 05 Dec 2013 18:56:14 +0100
changeset 3128
2d4ccc459f7e
parent 3126
df109651b577
child 3129
138331f6b0a0

Implemented a workaround for a bug in recent pysvn versions.

Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsPySvn/subversion.py file | annotate | diff | comparison | revisions
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu Dec 05 18:46:35 2013 +0100
+++ b/Documentation/Help/source.qhp	Thu Dec 05 18:56:14 2013 +0100
@@ -10238,6 +10238,7 @@
       <keyword name="Subversion" id="Subversion" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion" />
       <keyword name="Subversion (Constructor)" id="Subversion (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__init__" />
       <keyword name="Subversion (Constructor)" id="Subversion (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.__init__" />
+      <keyword name="Subversion.__isVersioned" id="Subversion.__isVersioned" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__isVersioned" />
       <keyword name="Subversion.__svnGetFileForRevision" id="Subversion.__svnGetFileForRevision" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__svnGetFileForRevision" />
       <keyword name="Subversion.__svnGetFileForRevision" id="Subversion.__svnGetFileForRevision" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.__svnGetFileForRevision" />
       <keyword name="Subversion.__svnURL" id="Subversion.__svnURL" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__svnURL" />
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html	Thu Dec 05 18:46:35 2013 +0100
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html	Thu Dec 05 18:56:14 2013 +0100
@@ -66,6 +66,9 @@
 <td><a href="#Subversion.__init__">Subversion</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#Subversion.__isVersioned">__isVersioned</a></td>
+<td>Private method to check, if the given status indicates a versioned state.</td>
+</tr><tr>
 <td><a href="#Subversion.__svnGetFileForRevision">__svnGetFileForRevision</a></td>
 <td>Private method to get a file for a specific revision from the repository.</td>
 </tr><tr>
@@ -285,6 +288,22 @@
 <dd>
 name of this object (string)
 </dd>
+</dl><a NAME="Subversion.__isVersioned" ID="Subversion.__isVersioned"></a>
+<h4>Subversion.__isVersioned</h4>
+<b>__isVersioned</b>(<i>status</i>)
+<p>
+        Private method to check, if the given status indicates a
+        versioned state.
+</p><dl>
+<dt><i>status</i></dt>
+<dd>
+status object to check (pysvn.PysvnStatus)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a versioned state (boolean)
+</dd>
 </dl><a NAME="Subversion.__svnGetFileForRevision" ID="Subversion.__svnGetFileForRevision"></a>
 <h4>Subversion.__svnGetFileForRevision</h4>
 <b>__svnGetFileForRevision</b>(<i>name, rev=""</i>)
--- a/Plugins/VcsPlugins/vcsPySvn/subversion.py	Thu Dec 05 18:46:35 2013 +0100
+++ b/Plugins/VcsPlugins/vcsPySvn/subversion.py	Thu Dec 05 18:56:14 2013 +0100
@@ -1494,7 +1494,7 @@
                 dirs = [x for x in names.keys() if os.path.isdir(x)]
                 for file in allFiles:
                     name = os.path.normcase(file.path)
-                    if file.is_versioned:
+                    if self.__isVersioned(file):
                         if name in names:
                             names[name] = self.canBeCommitted
                             dn = name
@@ -1568,7 +1568,7 @@
                 locker.unlock()
                 for file in allFiles:
                     name = os.path.normcase(file.path)
-                    if file.is_versioned:
+                    if self.__isVersioned(file):
                         if name in names:
                             names[name] = self.canBeCommitted
                         self.statusCache[name] = self.canBeCommitted
@@ -1579,6 +1579,25 @@
         
         return names
         
+    def __isVersioned(self, status):
+        """
+        Private method to check, if the given status indicates a
+        versioned state.
+        
+        @param status status object to check (pysvn.PysvnStatus)
+        @return flag indicating a versioned state (boolean)
+        """
+        return status["text_status"] in [
+            pysvn.wc_status_kind.normal,
+            pysvn.wc_status_kind.added,
+            pysvn.wc_status_kind.missing,
+            pysvn.wc_status_kind.deleted,
+            pysvn.wc_status_kind.replaced,
+            pysvn.wc_status_kind.modified,
+            pysvn.wc_status_kind.merged,
+            pysvn.wc_status_kind.conflicted,
+        ]
+        
     def clearStatusCache(self):
         """
         Public method to clear the status cache.

eric ide

mercurial