Различие между этими двумя является тонким, но значительным.
В процедурной программе, модули взаимодействуют путем чтения и записи состояния, которое хранится в структурах совместно используемых данных.
В объектно-ориентированной программе, модули в форме объектов взаимодействуют путем отправки сообщений в другие объекты.
Одной из возможных процедур может быть следующее:
svn diff -r 224452: 224453> diff1.patch
). svn up -r224446
) patch -p0 -i diff1.patch
) svn diff -r 224445> diff2.patch
) Один из вариантов - создать ветку на 224446, а затем объединить 224453 и 224462. Затем найдите разницу между этим и 224445 на стволе. Это должны быть все изменения в одном, и вы можете создать его как файл патча, если вам нужно:
# Branch from your initial checkin
svn cp svn://xyz/trunk@224446 svn://xyz/branches/foo
# Check it out
svn checkout svn://xyz/branches/foo tmp
# Merge in the two changes
svn merge -c 224453,224462 svn://xyz/trunk tmp
# Commit the changes
svn commit tmp -m "Extra commits 224453 and 224462"
# Diff the branch from mainline before original
svn diff svn://xyz/trunk@224445 svn://xyz/branches/foo
Это в основном то же самое, что и ответ Мартина, только с разными способами применения изменений и получения различий. Обратите внимание, что хотя в данном случае я зафиксировал изменения, в действительности это не обязательно - вы можете просто выполнить svn diff svn: // xyz / trunk @ 224445 tmp
вместо двух последних команд. Хорошая вещь в том, чтобы иметь его в репозитории, тогда любой может применить diff в обратном порядке, чтобы откатить его, если это потребуется.