Инвертирование различий или исправлений || CVS diff

StackOverflow https://stackoverflow.com/questions/1867238

Вопрос

В CVS моя рабочая копия (WC) находится в определенной ветке (которую мы будем называть "foo").Были и другие изменения, внесенные в foo другим разработчиком.Я хочу провести различие между моим WC и вышестоящим состоянием foo.Обычно, работая в багажнике (HEAD), я просто делаю cvs diff , и это нормально.Но по какой-то причине при выполнении простого cvs diff в ветке diff пуст.Когда я пытаюсь использовать "cvs diff -r foo", разница отображается, но она инвертирована - добавления вверх по потоку показаны с минусами, а удаления вверх по потоку показаны с плюсами.

Как я могу либо:(1) заставить CVS отличаться "другим способом" (плюс для вышестоящих дополнений) или (2) инвертировать патч (в целом)?

Это было полезно?

Решение

Если основная цель этого - проверить, "как дела" в центральном репозитории, я предлагаю вам обзавестись функциональным средством просмотра CVS / браузером / веб-программой, где вы можете просматривать последние изменения перед обновлением.Но предполагая, что все, что у вас есть, это CVS из командной строки, я все равно попытаюсь предложить вам решение :)

Итак, то, что у вас здесь есть, - это ветка foo это пошло от A -> B, где B является состоянием ветки (на сервере) после проверки другим разработчиком, и A это состояние, до которого вы в последний раз обновляли свою рабочую копию.

Когда просто выполняешь обычную cvs diff в этой ситуации вы увидите свои локальные изменения по сравнению с A с тех пор как A это то, что вы проверили.Локальное состояние CVS покажет, что каждый файл поступает из редакции A в ветке foo, и при изменении ваш клиент CVS загрузит эту редакцию с сервера.В вашем случае, я предполагаю, что у вас нет локальных изменений с момента вашего cvs diff пусто.

Затем, когда вы делаете cvs diff -r foo вы отличаетесь от своего местного A (или A+изменяет) по сравнению с foo (который в настоящее время находится на B) - и изменения, необходимые для получения с сервера B к вашему A+changes это полная противоположность регистрации другого разработчика плюс ваши собственные локальные изменения.

Теперь, если вы действительно хотите знать, как B (или tip-of-foo) сравнивается с A (первозданной версией того, что вы в данный момент проверили), я думаю, вам нужно установить тег в вашей рабочей копии, а затем сравнить этот тег с состоянием ветки.Что- то вроде этого:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1

Другие советы

возможно, то, что вы хотите, можно сделать, используя interdiff из пакета patchutils.

Я часто использую его таким образом, чтобы увидеть, что изменилось в магистрали для данного файла:

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null

Вы можете попробовать экспортировать файл из ветки в какой-нибудь временный файл, а затем сделать различие между вашей рабочей копией и этим временным файлом.Кажется, это самый простой способ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top