[PATCH 01 of 13] largefiles: refactoring - create destination dir in lfutil.link

Mads Kiilerich mads at kiilerich.com
Tue Apr 16 02:43:18 UTC 2013


# HG changeset patch
# User Mads Kiilerich <madski at unity3d.com>
# Date 1366061553 -7200
#      Mon Apr 15 23:32:33 2013 +0200
# Node ID ee8921bf4a35fe2fd8a2dcc04a0048db344ca58f
# Parent  18b828bbae09abbeac1d8ad79fbef22691f34ec2
largefiles: refactoring - create destination dir in lfutil.link

diff --git a/hgext/largefiles/lfutil.py b/hgext/largefiles/lfutil.py
--- a/hgext/largefiles/lfutil.py
+++ b/hgext/largefiles/lfutil.py
@@ -39,6 +39,7 @@
     return lfsize
 
 def link(src, dest):
+    util.makedirs(os.path.dirname(dest))
     try:
         util.oslink(src, dest)
     except OSError:
@@ -86,7 +87,6 @@
     elif inusercache(repo.ui, hash):
         repo.ui.note(_('found %s in system cache\n') % hash)
         path = storepath(repo, hash)
-        util.makedirs(os.path.dirname(path))
         link(usercachepath(repo.ui, hash), path)
         return path
     return None
@@ -203,10 +203,10 @@
 
 
 def copytostoreabsolute(repo, file, hash):
-    util.makedirs(os.path.dirname(storepath(repo, hash)))
     if inusercache(repo.ui, hash):
         link(usercachepath(repo.ui, hash), storepath(repo, hash))
     elif not getattr(repo, "_isconverting", False):
+        util.makedirs(os.path.dirname(storepath(repo, hash)))
         dst = util.atomictempfile(storepath(repo, hash),
                                   createmode=repo.store.createmode)
         for chunk in util.filechunkiter(open(file, 'rb')):
@@ -217,7 +217,6 @@
 def linktousercache(repo, hash):
     path = usercachepath(repo.ui, hash)
     if path:
-        util.makedirs(os.path.dirname(path))
         link(storepath(repo, hash), path)
 
 def getstandinmatcher(repo, pats=[], opts={}):
diff --git a/hgext/largefiles/localstore.py b/hgext/largefiles/localstore.py
--- a/hgext/largefiles/localstore.py
+++ b/hgext/largefiles/localstore.py
@@ -8,9 +8,6 @@
 
 '''store class for local filesystem'''
 
-import os
-
-from mercurial import util
 from mercurial.i18n import _
 
 import lfutil
@@ -26,7 +23,6 @@
         super(localstore, self).__init__(ui, repo, self.remote.url())
 
     def put(self, source, hash):
-        util.makedirs(os.path.dirname(lfutil.storepath(self.remote, hash)))
         if lfutil.instore(self.remote, hash):
             return
         lfutil.link(lfutil.storepath(self.repo, hash),



More information about the Mercurial-devel mailing list