⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entry.py

📁 subversion-1.4.3-1.tar.gz 配置svn的源码
💻 PY
字号:
#!/usr/bin/env python##  entry.py:  module to parse '.svn/entries' file##  Subversion is a tool for revision control.#  See http://subversion.tigris.org for more information.## ====================================================================# 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.######################################################################### Usage:##    Just call svn_entry.get_entries(path), where PATH is exact path#    to an 'entries' file.  You'll get back a hash of svn_entry#    objects keyed by name.##    Each object contains a hash 'atts' that you can examine: name,#    kind, revision, ancestor.  Other optional keys *might* be#    present, such as prop-time, text-time, add, delete, conflict.import xml.parsers.expat  # you may need to install this packageclass svn_entry:  "An object that represents an entry from an 'entries' file."  def __init__(self, attributes):   # constructor    self.atts = attributes  def prettyprint(self):    print " Entryname:", self.atts['name']    print "      Kind:", self.atts['kind']    print "  Revision:", self.atts['revision']    print "  Ancestor:", self.atts['ancestor']    print "  all atts:", self.atts    printclass svn_entryparser:  "A class to parse an 'entries' file."  def __init__(self):   # constructor    self.entry_dict = {}    self.parser = xml.parsers.expat.ParserCreate()    self.parser.StartElementHandler = self.handle_start_tag  def handle_start_tag(self, name, attrs):    "Expat callback that receives a new open-tag."    if attrs.has_key('name'):      entry = svn_entry(attrs) # create new entry object      # Derive missing values      if not entry.atts.has_key('kind'):        entry.atts['kind'] = 'file' # default kind if none mentioned      if not entry.atts.has_key('revision'):        if self.entry_dict.has_key(""):          parent = self.entry_dict[""]          entry.atts['revision'] = parent.atts['revision']      if not entry.atts.has_key('ancestor'):        if self.entry_dict.has_key(""):          parent = self.entry_dict[""]          entry.atts['ancestor'] = parent.atts['ancestor'] + '/' \                                   + entry.atts['name']      self.entry_dict[attrs['name']] = entry  # store the new entry# The main exported routinedef get_entries(path):  "Parse the entries file at PATH and return a list of svn_entry objects."  entryparser = svn_entryparser() # make a parser instance  fp = open(path, 'r')  entryparser.parser.ParseFile(fp)  fp.close()  return entryparser.entry_dict### End of file.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -