Я знаю, что это старый, но нет принятого ответа, и я наткнулся на него при поиске информации, относящейся к node_kind
.
import pysvn
tmpFile = open('your.log', 'w')
repository = sys.argv[1]
transactionId = sys.argv[2]
transaction = pysvn.Transaction(repository, transactionId)
#
# transaction.changed()
#
# {
# u'some.file': ('R', <node_kind.file>, 1, 0),
# u'another.file': ('R', <node_kind.file>, 1, 0),
# u'aDirectory/a.file': ('R', <node_kind.file>, 1, 0),
# u'anotherDirectory': ('A', <node_kind.dir>, 0, 0),
# u'junk.file': ('D', <node_kind.file>, 0, 0)
# }
#
for changedFile in transaction.changed():
tmpFile.writelines(transaction.cat(changedFile))
# if you need to check data in the .changed() dict...
# if ('A' or 'R') in transaction.changed()[changedFile][0]
Я использую Transaction аналогично описанному выше в скрипте хука pre-commit SVN.
См. Документацию для подробностей словаря:
http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_transaction
http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_transaction_changed
Кроме того, хотя я не использовал метод list () транзакции, который также может представлять интерес:
http://pysvn.tigris.org/docs/pysvn_prog_ref.html#pysvn_transaction