Bryan O'Sullivan avatar Bryan O'Sullivan committed b62fff7

buildmeta: only write the uuid file if needed

We used to write it unconditionally.

Comments (0)

Files changed (1)

hgsubversion/svncommands.py

     return _buildmeta(ui, repo, args, partial=False,
                       skipuuid=unsafe_skip_uuid_check)
 
+def write_if_needed(path, content):
+    try:
+        fp = open(path)
+        mustwrite = fp.read() != content
+        fp.close()
+    except IOError, err:
+        if err.errno != errno.ENOENT:
+            raise
+        mustwrite = True
+    if mustwrite:
+        fp = open(path, 'w')
+        fp.write(content)
+        fp.close()
+
 def _buildmeta(ui, repo, args, partial=False, skipuuid=False):
 
     if repo is None:
                 if uuid != svn.uuid:
                     raise hgutil.Abort('remote svn repository identifier '
                                        'does not match')
-            uuidfile = open(os.path.join(svnmetadir, 'uuid'), 'w')
-            uuidfile.write(svn.uuid)
-            uuidfile.close()
+            write_if_needed(os.path.join(svnmetadir, 'uuid'), uuid)
 
         # don't reflect closed branches
         if (ctx.extra().get('close') and not ctx.files() or
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.