# HG changeset patch # User Mads Kiilerich # Date 1458401304 25200 # Node ID 33bd95443e7f257f63a1c7327cc8a024231cc792 # Parent 78e4e558fa74aa4489609953328cbcecf1a8a428 largefiles: add some docstrings diff -r 78e4e558fa74 -r 33bd95443e7f hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Sat Mar 19 08:27:54 2016 -0700 +++ b/hgext/largefiles/lfutil.py Sat Mar 19 08:28:24 2016 -0700 @@ -39,6 +39,7 @@ return lfsize def link(src, dest): + """Try to create hardlink - if that fails, efficiently make a copy.""" util.makedirs(os.path.dirname(dest)) try: util.oslink(src, dest) @@ -86,6 +87,9 @@ return os.path.exists(path) def findfile(repo, hash): + '''Return store path of the largefile with the specified hash. + As a side effect, the file might be linked from user cache. + Return None if the file can't be found locally.''' path, exists = findstorepath(repo, hash) if exists: repo.ui.note(_('found %s in store\n') % hash) @@ -176,9 +180,13 @@ if rev is not None or repo.dirstate[f] != '?'] def instore(repo, hash, forcelocal=False): + '''Return true if a largefile with the given hash exists in the user + cache.''' return os.path.exists(storepath(repo, hash, forcelocal)) def storepath(repo, hash, forcelocal=False): + '''Return the correct location in the repository largefiles cache for a + file with the given hash.''' if not forcelocal and repo.shared(): return repo.vfs.reljoin(repo.sharedpath, longname, hash) return repo.join(longname, hash) @@ -257,6 +265,8 @@ linktousercache(repo, hash) def linktousercache(repo, hash): + '''Link / copy the largefile with the specified hash from the store + to the cache.''' path = usercachepath(repo.ui, hash) link(storepath(repo, hash), path) @@ -394,6 +404,7 @@ return util.pconvert(os.path.normpath(path)) def islfilesrepo(repo): + '''Return true if the repo is a largefile repo.''' if ('largefiles' in repo.requirements and any(shortnameslash in f[0] for f in repo.store.datafiles())): return True diff -r 78e4e558fa74 -r 33bd95443e7f hgext/largefiles/proto.py --- a/hgext/largefiles/proto.py Sat Mar 19 08:27:54 2016 -0700 +++ b/hgext/largefiles/proto.py Sat Mar 19 08:28:24 2016 -0700 @@ -22,8 +22,8 @@ httpoldcallstream = None def putlfile(repo, proto, sha): - '''Put a largefile into a repository's local store and into the - user cache.''' + '''Server command for putting a largefile into a repository's local store + and into the user cache.''' proto.redirect() path = lfutil.storepath(repo, sha) @@ -47,8 +47,8 @@ return wireproto.pushres(0) def getlfile(repo, proto, sha): - '''Retrieve a largefile from the repository-local cache or system - cache.''' + '''Server command for retrieving a largefile from the repository-local + cache or user cache.''' filename = lfutil.findfile(repo, sha) if not filename: raise error.Abort(_('requested largefile %s not present in cache') @@ -68,8 +68,8 @@ return wireproto.streamres(generator()) def statlfile(repo, proto, sha): - '''Return '2\n' if the largefile is missing, '0\n' if it seems to be in - good condition. + '''Server command for checking if a largefile is present - returns '2\n' if + the largefile is missing, '0\n' if it seems to be in good condition. The value 1 is reserved for mismatched checksum, but that is too expensive to be verified on every stat and must be caught be running 'hg verify' @@ -151,9 +151,12 @@ # advertise the largefiles=serve capability def capabilities(repo, proto): + '''Wrap server command to announce largefile server capability''' return capabilitiesorig(repo, proto) + ' largefiles=serve' def heads(repo, proto): + '''Wrap server command - largefile capable clients will know to call + lheads instead''' if lfutil.islfilesrepo(repo): return wireproto.ooberror(LARGEFILES_REQUIRED_MSG) return wireproto.heads(repo, proto)