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

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

1 Ответ

2 голосов
/ 08 февраля 2020

Да. Do:

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'
...