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.
# Published under the GNU GPL, v2 or later.# Copyright (C) 2007 Jelmer Vernooij <jelmer@samba.org># Copyright (C) 2007 Henry Ludemann <misc@hl.id.au># Copyright (C) 2007 TK Soh <teekaysoh@gmail.com>importosimportcachethgimportthgutilfrommercurialimporthg,ui,nodefrommercurial.i18nimport_try:frommercurial.errorimportRepoErrorexceptImportError:frommercurial.repoimportRepoErrorpromoted=[]try:from_winregimportHKEY_CURRENT_USER,OpenKey,QueryValueExtry:hkey=OpenKey(HKEY_CURRENT_USER,r"Software\TortoiseHg")pl=QueryValueEx(hkey,'PromotedItems')[0]foriteminpl.split(','):item=item.strip()ifitem:promoted.append(str(item))exceptEnvironmentError:promoted=['commit']exceptImportError:# fallback method for non-win32 platformsu=ui.ui()pl=u.config('tortoisehg','promoteditems','commit')foriteminpl.split(','):item=item.strip()ifitem:promoted.append(str(item))classTortoiseMenu(object):def__init__(self,menutext,helptext,hgcmd,icon=None,state=True):self.menutext=menutextself.helptext=helptextself.hgcmd=hgcmdself.state=stateself.icon=icondefisSubmenu(self):returnFalsedefisSep(self):returnFalseclassTortoiseSubmenu(TortoiseMenu):def__init__(self,menutext,helptext,menus=[],icon=None):TortoiseMenu.__init__(self,menutext,helptext,None,icon)self.menus=menus[:]defadd_menu(self,menutext,helptext,hgcmd,icon=None,state=True):self.menus.append(TortoiseMenu(menutext,helptext,hgcmd,icon,state))defadd_sep(self):self.menus.append(TortoiseMenuSep())defget_menus(self):returnself.menusdefappend(self,entry):self.menus.append(entry)defisSubmenu(self):returnTrueclassTortoiseMenuSep(object):hgcmd='----'defisSubmenu(self):returnFalsedefisSep(self):returnTrueclassthg_menu(object):def__init__(self,ui,name="TortoiseHG"):self.menus=[[]]self.ui=uiself.name=nameself.sep=[False]defadd_menu(self,menutext,helptext,hgcmd,icon=None,state=True):globalpromotedifhgcmdinpromoted:pos=0else:pos=1whilelen(self.menus)<=pos:#add Submenuself.menus.append([])self.sep.append(False)ifself.sep[pos]:self.sep[pos]=Falseself.menus[pos].append(TortoiseMenuSep())self.menus[pos].append(TortoiseMenu(menutext,helptext,hgcmd,icon,state))defadd_sep(self):self.sep=[Truefor_sinself.sep]defget(self):menu=self.menus[0][:]forsubmenuinself.menus[1:]:menu.append(TortoiseSubmenu(self.name,'Mercurial',submenu,"hg.ico"))menu.append(TortoiseMenuSep())returnmenudef__iter__(self):returniter(self.get())defopen_repo(path):root=thgutil.find_root(path)ifroot:try:repo=hg.repository(ui.ui(),path=root)returnrepoexceptRepoError:passexceptStandardError,e:print"error while opening repo %s:"%pathprintereturnNoneclassmenuThg:"""shell extension that adds context menu items"""def__init__(self):self.name="TortoiseHG"defget_commands_dragdrop(self,srcfiles,destfolder):""" Get a list of commands valid for the current selection. Commands are instances of TortoiseMenu, TortoiseMenuSep or TortoiseMenu """# we can only accept dropping one itemiflen(srcfiles)>1:return[]# open repodrag_repo=Nonedrop_repo=Nonedrag_path=srcfiles[0]drag_repo=open_repo(drag_path)ifnotdrag_repo:return[]ifdrag_repoanddrag_repo.root!=drag_path:return[]# dragged item must be a hg repo root directorydrop_repo=open_repo(destfolder)menu=thg_menu(drag_repo.ui,self.name)menu.add_menu(_("Create Clone"),_("Create clone here from source"),'clone',icon="menuclone.ico")ifdrop_repo:menu.add_menu(_("Synchronize"),_("Synchronize with dragged repository"),'synch',icon="menusynch.py")returnmenudefget_norepo_commands(self,cwd,files):menu=thg_menu(ui.ui(),self.name)menu.add_menu(_("Clone a Repository"),_("clone a repository"),'clone',icon="menuclone.ico")menu.add_menu(_("Create Repository Here"),_("create a new repository in this directory"),'init',icon="menucreaterepos.ico")menu.add_menu(_("Global Settings"),_("Configure user wide settings"),'userconfig',icon="settings_user.ico")menu.add_sep()menu.add_menu(_("About"),_("About TortoiseHg"),'about',icon="menuabout.ico")menu.add_sep()returnmenudefget_commands(self,repo,cwd,files):""" Get a list of commands valid for the current selection. Commands are instances of TortoiseMenu, TortoiseMenuSep or TortoiseMenu """states=set()onlyfiles=len(files)>0hashgignore=Falseforfinfiles:ifnotos.path.isfile(f):onlyfiles=Falseiff.endswith('.hgignore'):hashgignore=Truestates.update(cachethg.get_states(f,repo))ifnotfiles:states.update(cachethg.get_states(cwd,repo))ifcachethg.ROOTinstatesandlen(states)==1:states.add(cachethg.MODIFIED)changed=bool(states&set([cachethg.ADDED,cachethg.MODIFIED]))modified=cachethg.MODIFIEDinstatesclean=cachethg.UNCHANGEDinstatestracked=changedormodifiedorcleannew=bool(states&set([cachethg.UNKNOWN,cachethg.IGNORED]))menu=thg_menu(repo.ui,self.name)ifchangedorcachethg.UNKNOWNinstatesor'qtip'inrepo['.'].tags():menu.add_menu(_("HG Commit..."),_("Commit changes in repository"),'commit',icon="menucommit.ico")ifhashgignoreornewandlen(states)==1:menu.add_menu(_("Edit Ignore Filter"),_("Edit repository ignore filter"),'hgignore',icon="ignore.ico")ifchangedorcachethg.UNKNOWNinstates:menu.add_menu(_("View File Status"),_("Repository status"),'status',icon="menushowchanged.ico")ifmodified:menu.add_menu(_("Shelve Changes"),_("Shelve or unshelve repository changes"),'shelve',icon="shelve.ico")# Visual Diff (any extdiff command)has_vdiff=repo.ui.config('tortoisehg','vdiff','vdiff')!=''ifhas_vdiffandmodified:menu.add_menu(_("Visual Diff"),_("View changes using GUI diff tool"),'vdiff',icon="TortoiseMerge.ico")iflen(files)==0andcachethg.UNKNOWNinstates:menu.add_menu(_("Guess Renames"),_("Detect renames and copies"),'guess',icon="detect_rename.ico")eliflen(files)==1andtracked:# needs icomenu.add_menu(_("Rename File"),_("Rename file or directory"),'rename',icon="general.ico")iffilesandnew:menu.add_menu(_("Add Files"),_("Add files to Hg repository"),'add',icon="menuadd.ico")iffilesandtracked:menu.add_menu(_("Remove Files"),_("Remove selected files on the next commit"),'remove',icon="menudelete.ico")iffilesandchanged:menu.add_menu(_("Revert Changes"),_("Revert selected files"),'revert',icon="menurevert.ico")# we can only annotate file but not directoriesifonlyfilesandtracked:menu.add_menu(_("Annotate Files"),_("show changeset information per file line"),'datamine',icon="menublame.ico")menu.add_sep()iftracked:menu.add_menu(_("View Changelog"),_("View revision history"),'history',icon="menulog.ico") if len(files) == 0:
menu.add_sep()
- menu.add_menu(_("Update To Revision"),- _("update working directory"),- 'update', icon="menucheckout.ico")-- inmerge = repo.dirstate.parents()[1] != node.nullid- if not inmerge:- menu.add_menu(_("Merge Revisions"),- _("merge working directory with another revision"),- 'merge', icon="menumerge.ico")- else:- menu.add_menu(_("Undo Merge"),- _("Undo merge by updating to revision"),- 'merge', icon="menuunmerge.ico")- menu.add_menu(_("Search History"),
_("Search revisions of files for a text pattern"),
'datamine', icon="menurepobrowse.ico")
menu.add_sep()menu.add_menu(_("Synchronize..."),_("Synchronize with remote repository"),'synch',icon="menusynch.ico")menu.add_menu(_("Recovery..."),_("General repair and recovery of repository"),'recovery',icon="general.ico")menu.add_menu(_("Web Server"),_("start web server for this repository"),'serve',icon="proxy.ico")menu.add_sep()menu.add_menu(_("Create Clone"),_("Clone a repository here"),'clone',icon="menuclone.ico")ifrepo.root!=cwd:menu.add_menu(_("Create Repository Here"),_("create a new repository in this directory"),'init',icon="menucreaterepos.ico")# config settings menumenu.add_sep()menu.add_menu(_("Global Settings"),_("Configure user wide settings"),'userconfig',icon="settings_user.ico")menu.add_menu(_("Repository Settings"),_("Configure settings local to this repository"),'repoconfig',icon="settings_repo.ico")# add common menu itemsmenu.add_sep()menu.add_menu(_("About"),_("About TortoiseHg"),'about',icon="menuabout.ico")menu.add_sep()returnmenu
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.