亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? svnlook.py

?? subversion-1.4.3-1.tar.gz 配置svn的源碼
?? PY
字號:
#!/usr/bin/env python## svnlook.py : a Python-based replacement for svnlook######################################################################### Copyright (c) 2000-2004 CollabNet.  All rights reserved.## This software is licensed as described in the file COPYING, which# you should have received as part of this distribution.  The terms# are also available at http://subversion.tigris.org/license-1.html.# If newer versions of this license are posted there, you may use a# newer version instead, at your option.########################################################################import sysimport stringimport timeimport osfrom svn import core, fs, delta, reposclass SVNLook:  def __init__(self, path, cmd, rev, txn):    repos_ptr = repos.open(path)    self.fs_ptr = repos.fs(repos_ptr)    if txn:      self.txn_ptr = fs.open_txn(self.fs_ptr, txn)    else:      self.txn_ptr = None      if rev is None:        rev = fs.youngest_rev(self.fs_ptr)    self.rev = rev    getattr(self, 'cmd_' + cmd)()  def cmd_default(self):    self.cmd_info()    self.cmd_tree()  def cmd_author(self):    # get the author property, or empty string if the property is not present    author = self._get_property(core.SVN_PROP_REVISION_AUTHOR) or ''    print author  def cmd_changed(self):    self._print_tree(ChangedEditor, pass_root=1)  def cmd_date(self):    if self.txn_ptr:      print    else:      date = self._get_property(core.SVN_PROP_REVISION_DATE)      if date:        aprtime = core.svn_time_from_cstring(date)        # ### convert to a time_t; this requires intimate knowledge of        # ### the apr_time_t type        secs = aprtime / 1000000  # aprtime is microseconds; make seconds        # assume secs in local TZ, convert to tuple, and format        ### we don't really know the TZ, do we?        print time.strftime('%Y-%m-%d %H:%M', time.localtime(secs))      else:        print  def cmd_diff(self):    self._print_tree(DiffEditor, pass_root=1)  def cmd_dirs_changed(self):    self._print_tree(DirsChangedEditor)  def cmd_ids(self):    self._print_tree(Editor, base_rev=0, pass_root=1)  def cmd_info(self):    self.cmd_author()    self.cmd_date()    self.cmd_log(1)  def cmd_log(self, print_size=0):    # get the log property, or empty string if the property is not present    log = self._get_property(core.SVN_PROP_REVISION_LOG) or ''    if print_size:      print len(log)    print log  def cmd_tree(self):    self._print_tree(Editor, base_rev=0)  def _get_property(self, name):    if self.txn_ptr:      return fs.txn_prop(self.txn_ptr, name)    return fs.revision_prop(self.fs_ptr, self.rev, name)  def _print_tree(self, e_factory, base_rev=None, pass_root=0):    if base_rev is None:      # a specific base rev was not provided. use the transaction base,      # or the previous revision      if self.txn_ptr:        base_rev = fs.txn_base_revision(self.txn_ptr)      else:        base_rev = self.rev - 1    # get the current root    if self.txn_ptr:      root = fs.txn_root(self.txn_ptr)    else:      root = fs.revision_root(self.fs_ptr, self.rev)    # the base of the comparison    base_root = fs.revision_root(self.fs_ptr, base_rev)    if pass_root:      editor = e_factory(root, base_root)    else:      editor = e_factory()    # construct the editor for printing these things out    e_ptr, e_baton = delta.make_editor(editor)    # compute the delta, printing as we go    def authz_cb(root, path, pool):      return 1    repos.dir_delta(base_root, '', '', root, '',		    e_ptr, e_baton, authz_cb, 0, 1, 0, 0)class Editor(delta.Editor):  def __init__(self, root=None, base_root=None):    self.root = root    # base_root ignored    self.indent = ''  def open_root(self, base_revision, dir_pool):    print '/' + self._get_id('/')    self.indent = self.indent + ' '    # indent one space  def add_directory(self, path, *args):    id = self._get_id(path)    print self.indent + _basename(path) + '/' + id    self.indent = self.indent + ' '    # indent one space  # we cheat. one method implementation for two entry points.  open_directory = add_directory  def close_directory(self, baton):    # note: if indents are being performed, this slice just returns    # another empty string.    self.indent = self.indent[:-1]  def add_file(self, path, *args):    id = self._get_id(path)    print self.indent + _basename(path) + id  # we cheat. one method implementation for two entry points.  open_file = add_file  def _get_id(self, path):    if self.root:      id = fs.node_id(self.root, path)      return ' <%s>' % fs.unparse_id(id)    return ''class DirsChangedEditor(delta.Editor):  def open_root(self, base_revision, dir_pool):    return [ 1, '' ]  def delete_entry(self, path, revision, parent_baton, pool):    self._dir_changed(parent_baton)  def add_directory(self, path, parent_baton,                    copyfrom_path, copyfrom_revision, dir_pool):    self._dir_changed(parent_baton)    return [ 1, path ]  def open_directory(self, path, parent_baton, base_revision, dir_pool):    return [ 1, path ]  def change_dir_prop(self, dir_baton, name, value, pool):    self._dir_changed(dir_baton)  def add_file(self, path, parent_baton,               copyfrom_path, copyfrom_revision, file_pool):    self._dir_changed(parent_baton)  def open_file(self, path, parent_baton, base_revision, file_pool):    # some kind of change is going to happen    self._dir_changed(parent_baton)  def _dir_changed(self, baton):    if baton[0]:      # the directory hasn't been printed yet. do it.      print baton[1] + '/'      baton[0] = 0class ChangedEditor(delta.Editor):  def __init__(self, root, base_root):    self.root = root    self.base_root = base_root  def open_root(self, base_revision, dir_pool):    return [ 1, '' ]  def delete_entry(self, path, revision, parent_baton, pool):    ### need more logic to detect 'replace'    if fs.is_dir(self.base_root, '/' + path):      print 'D   ' + path + '/'    else:      print 'D   ' + path  def add_directory(self, path, parent_baton,                    copyfrom_path, copyfrom_revision, dir_pool):    print 'A   ' + path + '/'    return [ 0, path ]  def open_directory(self, path, parent_baton, base_revision, dir_pool):    return [ 1, path ]  def change_dir_prop(self, dir_baton, name, value, pool):    if dir_baton[0]:      # the directory hasn't been printed yet. do it.      print '_U  ' + dir_baton[1] + '/'      dir_baton[0] = 0  def add_file(self, path, parent_baton,               copyfrom_path, copyfrom_revision, file_pool):    print 'A   ' + path    return [ '_', ' ', None ]  def open_file(self, path, parent_baton, base_revision, file_pool):    return [ '_', ' ', path ]  def apply_textdelta(self, file_baton, base_checksum):    file_baton[0] = 'U'    # no handler    return None  def change_file_prop(self, file_baton, name, value, pool):    file_baton[1] = 'U'  def close_file(self, file_baton, text_checksum):    text_mod, prop_mod, path = file_baton    # test the path. it will be None if we added this file.    if path:      status = text_mod + prop_mod      # was there some kind of change?      if status != '_ ':        print status + '  ' + pathclass DiffEditor(delta.Editor):  def __init__(self, root, base_root):    self.root = root    self.base_root = base_root  def _do_diff(self, base_path, path):    if base_path is None:      print "Added: " + path      label = path    elif path is None:      print "Removed: " + path      label = base_path    else:      print "Modified: " + path      label = path    print "===============================================================" + \          "==============="    args = []    args.append("-L")    args.append(label + "\t(original)")    args.append("-L")    args.append(label + "\t(new)")    args.append("-u")    differ = fs.FileDiff(self.base_root, base_path, self.root,                         path, diffoptions=args)    pobj = differ.get_pipe()    while 1:      line = pobj.readline()      if not line:        break      print line,    print ""      def delete_entry(self, path, revision, parent_baton, pool):    ### need more logic to detect 'replace'    if not fs.is_dir(self.base_root, '/' + path):      self._do_diff(path, None)  def add_file(self, path, parent_baton,               copyfrom_path, copyfrom_revision, file_pool):    self._do_diff(None, path)    return [ '_', ' ', None ]  def open_file(self, path, parent_baton, base_revision, file_pool):    return [ '_', ' ', path ]  def apply_textdelta(self, file_baton, base_checksum):    if file_baton[2] is not None:      self._do_diff(file_baton[2], file_baton[2], file_baton[3])    return Nonedef _basename(path):  "Return the basename for a '/'-separated path."  idx = string.rfind(path, '/')  if idx == -1:    return path  return path[idx+1:]def usage(exit):  if exit:    output = sys.stderr  else:    output = sys.stdout  output.write(     "usage: %s REPOS_PATH rev REV [COMMAND] - inspect revision REV\n"     "       %s REPOS_PATH txn TXN [COMMAND] - inspect transaction TXN\n"     "       %s REPOS_PATH [COMMAND] - inspect the youngest revision\n"     "\n"     "REV is a revision number > 0.\n"     "TXN is a transaction name.\n"     "\n"     "If no command is given, the default output (which is the same as\n"     "running the subcommands `info' then `tree') will be printed.\n"     "\n"     "COMMAND can be one of: \n"     "\n"     "   author:        print author.\n"     "   changed:       print full change summary: all dirs & files changed.\n"     "   date:          print the timestamp (revisions only).\n"     "   diff:          print GNU-style diffs of changed files and props.\n"     "   dirs-changed:  print changed directories.\n"     "   ids:           print the tree, with nodes ids.\n"     "   info:          print the author, data, log_size, and log message.\n"     "   log:           print log message.\n"     "   tree:          print the tree.\n"     "\n"     % (sys.argv[0], sys.argv[0], sys.argv[0]))    sys.exit(exit)def main():  if len(sys.argv) < 2:    usage(1)  rev = txn = None  args = sys.argv[2:]  if args:    cmd = args[0]    if cmd == 'rev':      if len(args) == 1:        usage(1)      try:        rev = int(args[1])      except ValueError:        usage(1)      del args[:2]    elif cmd == 'txn':      if len(args) == 1:        usage(1)      txn = args[1]      del args[:2]  if args:    if len(args) > 1:      usage(1)    cmd = string.replace(args[0], '-', '_')  else:    cmd = 'default'  if not hasattr(SVNLook, 'cmd_' + cmd):    usage(1)  SVNLook(sys.argv[1], cmd, rev, txn)if __name__ == '__main__':  main()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性感一类影片在线播放| 国产精品系列在线| 亚洲国产高清在线观看视频| 亚洲成人在线观看视频| 国产·精品毛片| 精品久久五月天| 亚洲一区二区视频在线| 国产福利91精品| 精品少妇一区二区| 天天综合天天综合色| 色综合色综合色综合| 国产欧美日韩在线| 麻豆成人免费电影| 欧美乱妇一区二区三区不卡视频| 亚洲欧美乱综合| 国内精品伊人久久久久av影院| 欧美亚洲丝袜传媒另类| 亚洲日本va在线观看| 国产69精品一区二区亚洲孕妇| 欧美一二区视频| 日韩精品成人一区二区三区| 色8久久人人97超碰香蕉987| 国产精品久久免费看| 国产成人av电影在线| 久久久亚洲国产美女国产盗摄| 青青草原综合久久大伊人精品| 欧美三级三级三级爽爽爽| 亚洲欧洲日韩av| 成人性生交大合| 国产亚洲欧美日韩在线一区| 国产乱一区二区| 亚洲精品在线网站| 国产激情一区二区三区四区 | 日本女优在线视频一区二区 | 一区二区三区在线视频观看58| 99综合影院在线| 国产精品理论片| 91在线国产福利| 亚洲人成精品久久久久久| 大尺度一区二区| 亚洲欧美一区二区三区国产精品 | 久久se这里有精品| 日韩精品专区在线影院观看| 另类调教123区| 久久精品免费在线观看| 国产精品一区二区男女羞羞无遮挡 | 亚洲一区二区三区美女| 欧美日韩一区三区四区| 婷婷综合在线观看| 日韩欧美国产三级| 国产98色在线|日韩| 国产精品久久久久久妇女6080 | 亚洲最色的网站| 欧美精品在线视频| 精东粉嫩av免费一区二区三区| 中文字幕免费观看一区| 色综合一区二区三区| 亚洲成人tv网| 久久亚洲私人国产精品va媚药| 国产成人精品亚洲日本在线桃色| 国产精品久久久久精k8| 欧美三级午夜理伦三级中视频| 久久精品久久99精品久久| 国产精品欧美极品| 欧美日本韩国一区| 激情av综合网| 一区二区在线观看视频| 91精品啪在线观看国产60岁| 国产成人综合亚洲网站| 亚洲成人av在线电影| 国产欧美日韩在线视频| 欧美日韩另类一区| 国产一区二区三区不卡在线观看| 国产精品伦一区二区三级视频| 欧美专区日韩专区| 国产一区二区伦理片| 亚洲va欧美va天堂v国产综合| 精品sm在线观看| 欧美日韩在线播放三区| 国产凹凸在线观看一区二区| 天堂在线一区二区| ...xxx性欧美| 久久久久久久综合色一本| 欧美天天综合网| 波多野结衣精品在线| 久久99精品久久久久久| 亚洲五月六月丁香激情| 亚洲人一二三区| 久久久高清一区二区三区| 欧美一区欧美二区| 欧美性受xxxx黑人xyx性爽| 不卡av免费在线观看| 国产精品综合一区二区| 老司机精品视频线观看86| 亚洲国产婷婷综合在线精品| 亚洲欧洲99久久| 欧美国产一区二区| 久久久久久久一区| 精品国产免费一区二区三区香蕉 | 色婷婷综合久久久久中文 | 欧美日韩国产成人在线免费| 色综合色狠狠综合色| 春色校园综合激情亚洲| 国产一区在线观看视频| 狂野欧美性猛交blacked| 日韩和的一区二区| 亚洲一线二线三线久久久| 亚洲另类色综合网站| 亚洲欧美在线视频观看| 国产精品免费av| 中文字幕不卡在线观看| 中文字幕一区av| 自拍偷拍国产亚洲| 18成人在线视频| 亚洲欧美另类在线| 亚洲欧美在线高清| 一区二区三区欧美在线观看| 亚洲综合久久久| 香蕉影视欧美成人| 天天av天天翘天天综合网 | 日韩va亚洲va欧美va久久| 天天综合天天综合色| 免费黄网站欧美| 久久不见久久见中文字幕免费| 久久成人av少妇免费| 国产美女一区二区三区| 岛国一区二区三区| 94-欧美-setu| 欧美日韩一区不卡| 欧美一区二区在线视频| 精品国产乱码久久久久久牛牛| 精品久久人人做人人爰| 国产亚洲美州欧州综合国| 成人免费在线观看入口| 亚洲不卡在线观看| 国产又黄又大久久| 97精品超碰一区二区三区| 欧美日韩在线三级| 日韩欧美一区电影| 精品福利二区三区| 国产精品热久久久久夜色精品三区 | 久久亚洲捆绑美女| 中文字幕成人在线观看| 一区二区三区日韩| 极品少妇xxxx精品少妇偷拍| 高清不卡在线观看av| 色婷婷激情一区二区三区| 欧美丰满高潮xxxx喷水动漫| 久久无码av三级| 亚洲永久免费av| 国产麻豆午夜三级精品| 欧美亚洲一区二区在线| 久久久午夜精品| 亚洲一区二区三区中文字幕在线| 奇米影视一区二区三区| 成人av综合在线| 欧美三级韩国三级日本三斤 | 精品一区二区三区免费视频| 岛国一区二区三区| 欧美老女人在线| 日韩一区在线免费观看| 日韩高清不卡一区二区| 成人一道本在线| 日韩欧美国产高清| 亚洲福利一区二区| 成人激情图片网| 精品成人佐山爱一区二区| 玉米视频成人免费看| 成人网在线免费视频| 精品日韩一区二区三区| 亚洲一区二区不卡免费| 丁香六月综合激情| 久久看人人爽人人| 青青草原综合久久大伊人精品 | 日本vs亚洲vs韩国一区三区二区| 国产宾馆实践打屁股91| 欧美一区二区三区在线视频| 亚洲精品久久7777| a级高清视频欧美日韩| 精品av综合导航| 奇米影视在线99精品| 欧美美女视频在线观看| 亚洲美女精品一区| 成人av综合在线| 亚洲国产精品传媒在线观看| 国产精品一区二区无线| 精品女同一区二区| 日本不卡1234视频| 欧美一区二区国产| 裸体一区二区三区| 3751色影院一区二区三区| 亚洲一区二区在线视频| 色av一区二区| 亚洲精品国产一区二区精华液| av电影在线观看一区| 中文乱码免费一区二区| 国产一区二区福利| 精品国产sm最大网站| 国产毛片精品视频| 国产视频一区二区在线观看|