Волей-неволей можно ли вычесть изменения одного списка изменений из другого?

Предположим, у меня есть два списка изменений A и B (который находится поверх A).
Теперь мне нужны только изменения, сделанные в B, а не те, которые включены в A, т.е. B-A
Можно ли Сделай так?


person rango    schedule 08.02.2020    source источник


Ответы (1)


Да. Делать:

p4 undo @A,A
p4 sync @B

Это создаст новый список ожидающих изменений, который будет "B минус A". Если A и B коснулись одного и того же файла (файлов), для синхронизации с @B потребуется разрешение на объединение изменений B в файл (без изменений A). Слияние будет настроено таким образом, чтобы все происходило максимально автоматически.

Если есть другие, более поздние изменения в том же файле(ах), вам нужно будет sync и resolve их так же, как и в любой другой раз, когда вы работаете со старым списком изменений.

Теоретически это также выполнимо в P4V (я думаю, что это команда «назад»), но у меня был неудачный опыт с этим, и я не рекомендую его. Это очень просто из командной строки.


Пример

C:\Perforce\test\undo>p4 annotate -c foo
//stream/main/undo/foo#3 - edit change 137 (text)
135: this
136: is    **CHANGE A**
135: a
137: test  **CHANGE B**
135: file

Изменение A — это @136, изменение B — это @137.

C:\Perforce\test\undo>p4 undo @136,136
//stream/main/undo/foo#2 - opened for integrate
... undid //stream/main/undo/foo#2

C:\Perforce\test\undo>p4 sync @137
//stream/main/undo/foo#3 - is opened and not being changed
... //stream/main/undo/foo - must resolve #3 before submitting

C:\Perforce\test\undo>p4 resolve -am
c:\Perforce\test\undo\foo - merging //stream/main/undo/foo#3
Diff chunks: 1 yours + 1 theirs + 0 both + 0 conflicting
//compy386/undo/foo - merge from //stream/main/undo/foo

C:\Perforce\test\undo>p4 submit -d "undid A"
Submitting change 138.
Locking 1 files ...
integrate //stream/main/undo/foo#4
Change 138 submitted.

Изменение 136 теперь отменено изменением 138:

C:\Perforce\test\undo>p4 annotate -c foo
//stream/main/undo/foo#4 - integrate change 138 (text)
135: this
138: is
135: a
137: test  **CHANGE B**
135: file

C:\Perforce\test\undo>p4 filelog foo
//stream/main/undo/foo
... #4 change 138 integrate on 2020/02/08 by Samwise@compy386 (text) 'undid A'
... ... undid //stream/main/undo/foo#2
... #3 change 137 edit on 2020/02/08 by Samwise@compy386 (text) 'change B'
... #2 change 136 edit on 2020/02/08 by Samwise@compy386 (text) 'change A'
... ... undone by //stream/main/undo/foo#4
... #1 change 135 add on 2020/02/08 by Samwise@compy386 (text) 'test file'
person Samwise    schedule 08.02.2020