Библиотека difflib полезна для этого и входит в стандартную библиотеку. Мне нравится унифицированный формат diff.
http://docs.python.org/2/library/difflib.html#difflib.unified_diff
import difflib
import sys
with open('/tmp/hosts0', 'r') as hosts0:
with open('/tmp/hosts1', 'r') as hosts1:
diff = difflib.unified_diff(
hosts0.readlines(),
hosts1.readlines(),
fromfile='hosts0',
tofile='hosts1',
)
for line in diff:
sys.stdout.write(line)
Выходы:
--- hosts0
+++ hosts1
@@ -1,5 +1,4 @@
one
two
-dogs
three
И вот хитроумная версия, которая игнорирует определенные строки. Там могут быть крайние случаи, которые не работают, и, конечно, есть более эффективные способы сделать это, но, возможно, это будет достаточно для ваших целей.
import difflib
import sys
with open('/tmp/hosts0', 'r') as hosts0:
with open('/tmp/hosts1', 'r') as hosts1:
diff = difflib.unified_diff(
hosts0.readlines(),
hosts1.readlines(),
fromfile='hosts0',
tofile='hosts1',
n=0,
)
for line in diff:
for prefix in ('---', '+++', '@@'):
if line.startswith(prefix):
break
else:
sys.stdout.write(line[1:])
Удаленное ответвление только отмечено, как удалено в момент вовремя, и возможно все еще добраться до кода, если Вы синхронизируете к changeset или время, прежде чем это удалит операцию.
, Если Вы не хотите иметь файл в ответвлении в базе данных вообще, можно использовать tf destroy
командная строка:
http://msdn.microsoft.com/en-us/library/bb386005.aspx
Как Ваше ответвление уже удален, необходимо будет использовать tf dir /deleted
для нахождения количества удаления того ответвления для уничтожения файлов.