Mercurial and Git clients can push and pull from this alias URL to interact with this repository. You can change to which repository an alias points by going to the Aliases link on the project page.
importosfrommercurialimporthg,cmdutil,util,uiimportthgutilimportsystry:frommercurial.errorimportRepoErrorexceptImportError:frommercurial.repoimportRepoErrortry:fromwin32apiimportGetTickCountCACHE_TIMEOUT=5000exceptImportError: from time import time as GetTickCount
CACHE_TIMEOUT = 5.0
-UNCHANGED = "unchanged"-ADDED = "added"-MODIFIED = "modified"-UNKNOWN = "unknown"-IGNORED = "ignored"-NOT_IN_REPO = "n/a"-ROOT = "root"
+STATUS_STATES = 'MAR!?IC'+MODIFIED, ADDED, REMOVED, DELETED, UNKNOWN, IGNORED, UNCHANGED = STATUS_STATES+NOT_IN_REPO = ' '+ROOT = "r"
+# file status cache
overlay_cache = {}
cache_tick_count=0cache_root=Nonecache_pdir=Nonedefadd_dirs(list):dirs=set()iflist:dirs.add('')forfinlist:pdir=os.path.dirname(f)ifpdirindirs:continuewhilepdir:dirs.add(pdir)pdir=os.path.dirname(pdir)list.extend(dirs)defget_state(upath,repo=None): """
Get the state of a given path in source control.
"""
-return get_states(upath, repo)[-1]
+states = get_states(upath, repo)
+ return states and states[0] or NOT_IN_REPOdef get_states(upath, repo=None):
""" Get the states of a given path in source control. """globaloverlay_cache,cache_tick_countglobalcache_root,cache_pdir#print "called: _get_state(%s)" % pathtc=GetTickCount()try:# handle some Asian charsetspath=upath.encode('mbcs')except:path=upath# check if path is cachedpdir=os.path.dirname(path)ifcache_pdir==pdirandoverlay_cache:iftc-cache_tick_count<CACHE_TIMEOUT:status=overlay_cache.get(path) if not status:
if os.path.isdir(os.path.join(path, '.hg')):
add(path, ROOT)
- status = ROOT,+ status = ROOT
else:
- status = overlay_cache.get(pdir, [NOT_IN_REPO])
+ status = overlay_cache.get(pdir, NOT_IN_REPO)
print "%s: %s (cached)" % (path, status)
return status
else:
print"Timed out!! ",overlay_cache.clear()cache_tick_count=GetTickCount() # path is a drive
if path.endswith(":\\"):
add(path, NOT_IN_REPO)
- return [NOT_IN_REPO]+ return NOT_IN_REPO
# open repo
if cache_pdir == pdir:
root = cache_root
else:print"find new root ", root = thgutil.find_root(path)
if root == path:
add(path, ROOT)
- return [ROOT]+ return ROOT
cache_root = root
cache_pdir = pdir
print"_get_state: root = ",rootifrootisNone: print "_get_state: not in repo"
overlay_cache = {None: None}
cache_tick_count = GetTickCount()
- return [NOT_IN_REPO]+ return NOT_IN_REPO
hgdir = os.path.join(root, '.hg', '')
if pdir == hgdir[:-1] or pdir.startswith(hgdir):
add(pdir, NOT_IN_REPO)
- return [NOT_IN_REPO]+ return NOT_IN_REPO
try:
tc1 = GetTickCount()
if not repo or (repo.root != root and repo.root != os.path.realpath(root)):
repo=hg.repository(ui.ui(),path=root)print"hg.repository() took %g ticks"%(GetTickCount()-tc1)# check if to display overlay icons in this repooverlayopt=repo.ui.config('tortoisehg','overlayicons',' ').lower()print"%s: repo overlayicons = "%path,overlayoptifoverlayopt=='localdisk':overlayopt=bool(thgutil.netdrive_status(path))ifnotoverlayoptoroverlayoptin'false off no'.split(): print "%s: overlayicons disabled" % path
overlay_cache = {None: None}
cache_tick_count = GetTickCount()
- return [NOT_IN_REPO]+ return NOT_IN_REPO
except RepoError:
# We aren't in a working tree
print "%s: not in repo" % pdir
add(pdir, IGNORED)
- return [IGNORED]+ return IGNORED
except StandardError, e:
print "error while handling %s:" % pdir
print e
add(pdir, UNKNOWN)
- return [UNKNOWN]+ return UNKNOWN
# get file status
tc1 = GetTickCount()
try:matcher=cmdutil.match(repo,[pdir])repostate=repo.status(match=matcher,ignored=True,clean=True,unknown=True) except util.Abort, inst:
print "abort: %s" % inst
print "treat as unknown : %s" % path
- return [UNKNOWN]+ return UNKNOWN
print "status() took %g ticks" % (GetTickCount() - tc1)
- modified, added, removed, deleted, unknown, ignored, clean = repostate # cached file info
tc = GetTickCount()
overlay_cache = {}
- for grp, st in (- (ignored, IGNORED),- (unknown, UNKNOWN),- (clean, UNCHANGED),- (added, ADDED),- (removed, MODIFIED),- (deleted, MODIFIED),- (modified, MODIFIED)):
+ add(root, ROOT)+ states = zip(repostate, STATUS_STATES)+ states[-1], states[-2] = states[-2], states[-1] #clean before ignored+ for grp, st in states:
add_dirs(grp)
for f in grp:
fpath = os.path.join(root, os.path.normpath(f))
add(fpath, st)
- add(root, ROOT)- status = overlay_cache.get(path, [UNKNOWN])
+ status = overlay_cache.get(path, UNKNOWN)
print "\n%s: %s" % (path, status)
cache_tick_count = GetTickCount()
return status
def add(path, state):
-c = overlay_cache.setdefault(path, [])
- c.append(state)+overlay_cache[path] = overlay_cache.get(path, '') + state
Attach a Trello Card
Add a tag
Your session has expired
You are no longer logged in. Please log in and try your request again.
Filter RSS Feed
This RSS feed URL allows you to see the contents of your current filter using any feed reader.
This link includes a special authentication token. If you share the URL with anyone else, they can see this RSS feed's activity. You can disable these tokens when needed.
Your current filter is unsaved; changing it won't affect this RSS feed.