largefiles: refactoring - create destination dir in lfutil.link
authorMads Kiilerich <madski@unity3d.com>
Mon, 15 Apr 2013 23:32:33 +0200
changeset 18998 d035c3902111
parent 18997 4cf09a1bf5b2
child 18999 c1b5f9c4d989
largefiles: refactoring - create destination dir in lfutil.link
hgext/largefiles/lfutil.py
hgext/largefiles/localstore.py
--- a/hgext/largefiles/lfutil.py	Tue Apr 09 23:40:11 2013 +0900
+++ b/hgext/largefiles/lfutil.py	Mon Apr 15 23:32:33 2013 +0200
@@ -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={}):
--- a/hgext/largefiles/localstore.py	Tue Apr 09 23:40:11 2013 +0900
+++ b/hgext/largefiles/localstore.py	Mon Apr 15 23:32:33 2013 +0200
@@ -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),