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

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

?? svnlook.py

?? linux subdivision ying gai ke yi le ba
?? PY
字號:
#!/usr/bin/env python2
#
# 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 sys
import string
import time
import os

from svn import core, fs, delta, repos

class SVNLook:
  def __init__(self, pool, path, cmd, rev, txn):
    self.pool = pool

    repos_ptr = repos.svn_repos_open(path, pool)
    self.fs_ptr = repos.svn_repos_fs(repos_ptr)

    if txn:
      self.txn_ptr = fs.open_txn(self.fs_ptr, txn, pool)
    else:
      self.txn_ptr = None
      if rev is None:
        rev = fs.youngest_rev(self.fs_ptr, pool)
    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, self.pool)
        # ### 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, self.pool)
    return fs.revision_prop(self.fs_ptr, self.rev, name, self.pool)

  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, self.pool)
    else:
      root = fs.revision_root(self.fs_ptr, self.rev, self.pool)

    # the base of the comparison
    base_root = fs.revision_root(self.fs_ptr, base_rev, self.pool)

    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, self.pool)

    # compute the delta, printing as we go
    def authz_cb(root, path, pool):
      return 1
    repos.svn_repos_dir_delta(base_root, '', '', root, '',
                              e_ptr, e_baton, authz_cb, 0, 1, 0, 0, self.pool)


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('/', dir_pool)
    self.indent = self.indent + ' '    # indent one space

  def add_directory(self, path, *args):
    id = self._get_id(path, args[-1])
    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, args[-1])
    print self.indent + _basename(path) + id

  # we cheat. one method implementation for two entry points.
  open_file = add_file

  def _get_id(self, path, pool):
    if self.root:
      id = fs.node_id(self.root, path, pool)
      return ' <%s>' % fs.unparse_id(id, pool)
    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] = 0


class 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, pool):
      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 + '  ' + path


class DiffEditor(delta.Editor):
  def __init__(self, root, base_root):
    self.root = root
    self.base_root = base_root

  def _do_diff(self, base_path, path, pool):
    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, pool, 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, pool):
      self._do_diff(path, None, pool)

  def add_file(self, path, parent_baton,
               copyfrom_path, copyfrom_revision, file_pool):
    self._do_diff(None, path, file_pool)
    return [ '_', ' ', None, file_pool ]

  def open_file(self, path, parent_baton, base_revision, file_pool):
    return [ '_', ' ', path, file_pool ]

  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 None

def _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)

  core.run_app(SVNLook, sys.argv[1], cmd, rev, txn)

if __name__ == '__main__':
  main()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
盗摄精品av一区二区三区| 欧美大尺度电影在线| 国产精品视频一二| 成人av资源站| 亚洲精品美腿丝袜| 欧美图区在线视频| 日韩高清在线不卡| 久久久久久久久久久黄色| 国产成人免费视| 国产精品传媒视频| 欧美天堂一区二区三区| 丝袜美腿亚洲色图| 国产精品理论片| 99在线精品免费| 午夜精品一区二区三区三上悠亚| 欧美高清性hdvideosex| 国产一区久久久| 亚洲精品视频免费观看| 日韩一区二区免费视频| 国产成人精品三级| 亚洲高清在线精品| 精品国产免费久久| 99精品桃花视频在线观看| 亚洲福利一区二区三区| www欧美成人18+| 91在线国产观看| 丝袜美腿亚洲综合| 国产精品美女久久久久久久久| 在线观看成人小视频| 国内精品视频一区二区三区八戒| 国产精品乱码人人做人人爱 | 亚洲国产日韩精品| 精品乱人伦一区二区三区| 99久精品国产| 极品少妇一区二区三区精品视频| 国产精品天干天干在观线| 欧美日本在线播放| 成人激情免费电影网址| 首页国产欧美久久| 国产精品麻豆99久久久久久| 欧美精品久久天天躁| 成人一二三区视频| 国产精品白丝在线| 蜜臀久久99精品久久久画质超高清 | 国产精品久久久久婷婷二区次| 午夜精品久久久久久久久久| 99精品视频在线免费观看| 精品日韩一区二区三区| 亚洲欧美电影院| 成人午夜伦理影院| 亚洲人亚洲人成电影网站色| 国产一区二区免费视频| 久久品道一品道久久精品| 国内成人免费视频| 日本一区二区三区久久久久久久久不| 国内外成人在线| 欧美一级欧美三级| 国产不卡免费视频| 久久久亚洲欧洲日产国码αv| 精品一区二区三区不卡 | av一区二区三区在线| 久久品道一品道久久精品| 亚洲色图欧美偷拍| 一本一道久久a久久精品| 亚洲男同1069视频| 欧美三级韩国三级日本三斤| 久久精品二区亚洲w码| 久久精品国产精品亚洲红杏| 一二三四区精品视频| 欧美精品一区二区三区在线播放| 亚洲精品一区在线观看| 精品国产一区二区精华| 欧美无砖专区一中文字| 美国欧美日韩国产在线播放| 午夜精品一区二区三区电影天堂| 色综合久久天天| 亚洲精品国产成人久久av盗摄| 欧美视频一区二区三区四区| 国产一区二区三区香蕉| 国产在线一区二区| 欧美在线免费观看亚洲| 久久久久久久久久久久久夜| 9191成人精品久久| 欧美三级午夜理伦三级中视频| 91天堂素人约啪| 色综合天天性综合| 欧美日韩亚州综合| 在线观看日产精品| 欧美日韩美少妇| 91精品麻豆日日躁夜夜躁| 精品中文字幕一区二区| 亚洲精选免费视频| 中文字幕在线观看一区| 欧美va日韩va| 欧美r级电影在线观看| 91亚洲精华国产精华精华液| 国产一区二区看久久| 日韩福利电影在线| 奇米精品一区二区三区在线观看一| 亚洲美女免费在线| 一区二区三区资源| 日韩一区欧美一区| 一区二区免费视频| 蜜桃久久久久久| 美女任你摸久久| 国产精品资源在线| 97久久精品人人做人人爽| jiyouzz国产精品久久| www.色精品| 欧美精品在线视频| 日韩一区二区免费在线电影| 91麻豆精品91久久久久久清纯| 成人午夜视频网站| 久久精品国产999大香线蕉| 美洲天堂一区二卡三卡四卡视频| 亚洲123区在线观看| 国产露脸91国语对白| 大尺度一区二区| 日韩区在线观看| 亚洲v中文字幕| 在线观看欧美精品| 一区二区三区欧美| 亚洲最大成人综合| 5858s免费视频成人| 欧美综合一区二区三区| 一本大道综合伊人精品热热| 欧美亚洲自拍偷拍| 一区二区三区中文字幕电影| 欧美精品v日韩精品v韩国精品v| 福利一区福利二区| 亚洲va欧美va人人爽午夜| 亚洲婷婷国产精品电影人久久| 亚洲一区二区影院| 久久av资源网| 欧美性极品少妇| 久久久国产精品午夜一区ai换脸| 亚洲一区二区三区国产| 免费在线观看日韩欧美| 94-欧美-setu| 精品国产乱码久久久久久老虎 | 国产激情91久久精品导航| aa级大片欧美| 精品成人在线观看| 亚洲精品中文在线观看| 国产精品一二三四| 精品视频999| 一区二区三区小说| 日本一区二区成人| 国产麻豆精品久久一二三| 欧美精品第一页| 亚洲欧美区自拍先锋| 成人app软件下载大全免费| 欧美一卡2卡三卡4卡5免费| 亚洲国产精品一区二区久久恐怖片| 国产一区二区在线看| 日韩欧美一二区| 处破女av一区二区| 亚洲国产精品久久久男人的天堂| 欧美一区二区黄色| eeuss影院一区二区三区| 精品视频资源站| 亚洲自拍都市欧美小说| 成人午夜在线播放| 中文一区二区在线观看| 美国精品在线观看| 日韩午夜激情视频| 蜜桃av一区二区在线观看| 在线免费观看一区| 亚洲精品国产a| 91碰在线视频| 国产精品久久精品日日| 黄色资源网久久资源365| 欧美成人精精品一区二区频| 日本女人一区二区三区| 欧美性大战久久久久久久 | 亚洲人成在线播放网站岛国| 不卡在线观看av| 国产欧美日韩久久| 成人av先锋影音| 国产精品三级av在线播放| av电影一区二区| 中文字幕一区av| 欧美日精品一区视频| 偷拍亚洲欧洲综合| 欧美一区二区播放| 国产一区二区免费视频| 久久精品欧美日韩精品| 成人激情免费视频| 亚洲一级二级三级| 91.麻豆视频| 婷婷综合五月天| 久久一区二区三区国产精品| 国产九九视频一区二区三区| 亚洲情趣在线观看| 欧美三级乱人伦电影| 韩国中文字幕2020精品| 国产精品成人免费精品自在线观看| 成人毛片老司机大片| 亚洲电影第三页| 欧美一区永久视频免费观看|