pull and commit should be much more useful about conflicts
[mw] / src / mw / metadir.py
index 07043c6ebd005c4310259577a49f7b6fae106e5c..0549c83b4232850e28754dd77db5308e0f4f36c6 100644 (file)
@@ -1,6 +1,6 @@
 ###
 # mw - VCS-like nonsense for MediaWiki websites
-# Copyright (C) 2010  Ian Weller <ian@ianweller.org>
+# Copyright (C) 2011  Ian Weller <ian@ianweller.org> and others
 #
 # 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
@@ -61,7 +61,7 @@ class Metadir(object):
             os.mkdir(self.location, 0755)
         # metadir versioning
         fd = file(os.path.join(self.location, 'version'), 'w')
-        fd.write('1') # XXX THIS API VERSION NOT LOCKED IN YET
+        fd.write('1')  # XXX THIS API VERSION NOT LOCKED IN YET
         fd.close()
         # create config
         self.config = ConfigParser.RawConfigParser()
@@ -127,19 +127,25 @@ class Metadir(object):
     def pages_get_rv_list(self, pageid):
         pagefile = os.path.join(self.location, 'cache', 'pages',
                                 str(pageid['id']))
-        fd = file(pagefile, 'r')
-        pagedata = json.loads(fd.read())
-        rvs = [int(x) for x in pagedata.keys()]
-        rvs.sort()
-        return rvs
+        if os.path.exists(pagefile):
+            fd = file(pagefile, 'r')
+            pagedata = json.loads(fd.read())
+            rvs = [int(x) for x in pagedata.keys()]
+            rvs.sort()
+            return rvs
+        else:
+            return [None,]
 
     def pages_get_rv(self, pageid, rvid):
         pagefile = os.path.join(self.location, 'cache', 'pages',
                                 str(pageid['id']))
-        fd = file(pagefile, 'r')
-        pagedata = json.loads(fd.read())
-        return pagedata[str(rvid)]
-
+        if os.path.exists(pagefile):
+            fd = file(pagefile, 'r')
+            pagedata = json.loads(fd.read())
+            return pagedata[str(rvid)]
+        else:
+            return None
+            
     def working_dir_status(self, files=None):
         status = {}
         check = []
@@ -167,7 +173,9 @@ class Metadir(object):
                     if (len(cur_content) != 0) and (cur_content[-1] == '\n'):
                         cur_content = cur_content[:-1]
                     if cur_content != rv['content']:
-                        status[os.path.relpath(full, self.root)] = 'U'
+                        status[os.path.relpath(full, self.root)] = 'M' # modified
+                    else:
+                        status[os.path.relpath(full, self.root)] = 'C' # clean
         return status
 
     def diff_rv_to_working(self, pagename, oldrvid=0, newrvid=0):

Benjamin Mako Hill || Want to submit a patch?