Perforce - генерировать diff, включая добавленные файлы?
Когда я использую "p4 diff", он игнорирует файлы, которые я открываю для добавления. Можно ли создать diff, который включает в себя добавленные файлы, а также измененные файлы?
Ответы
Ответ 1
Учитывая diff в Perforce, сравните файлы в рабочей области клиента с ревизиями в хранилище, короткий ответ - "нет". < ш > Нет никакой записанной истории для сравнения с добавленным файлом (не переданным в депо перед отправкой)
Более длинный ответ будет включать script, чтобы завершить разницу с полным содержимым добавленных файлов. (вроде как в этом SO вопрос)
Ответ 2
Это известная пропущенная функция p4 diff, с которой приходится сталкиваться с множеством инструментов, связанных с Perforce.
Инструмент просмотра кода Reviewboard поставляется с инструментом после обзора. Он используется для создания diff для a codereview, но он просто сделает diff, если вы хотите.
В python вы можете вытащить раздел diff для вашего собственного использования.
Ответ 3
Я написал это, чтобы помочь мне на cygwin:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "usage: $0 <pathSpec>"
exit 1
fi
pathSpec=$1
doIt () {
p4 opened "$pathSpec" | egrep "#.* - add" | while read f; do
# figure out the workspace path
depotPath=${f%#*}
clientFileLine=$(p4 fstat "$depotPath" | grep clientFile)
workspacePathWin=${clientFileLine#... clientFile }
# diff output
echo ==== $depotPath#1 - $workspacePathWin ====
workspacePath=$(cygpath "$workspacePathWin")
lineCount=$(wc -l < "$workspacePath")
echo @@ -0,0 +1,$lineCount @@
# the actual diff contents
sed -e 's/^/+/' "$workspacePath"
echo
done
}
doIt
Ответ 4
Я только что обошел эту проблему и получил мои добавленные файлы, включенные в предварительный анализ Fisheye.
То, что я сделал, это скопировать отредактированный заголовок дескриптора diff hack. Это включает в себя одну строку, в которой перечислены депо и локальные пути - довольно просто - и еще одна строка с информацией о диапазоне, отформатированная, как описано здесь.
Итак, я добавил каждое добавленное содержимое каждого файла в diff, каждому из которых предшествует
==== //path/to/depot/file#1 - /path/to/workspace/file ====
@@ -1,1 +1,LEN @@
где LEN
- количество строк в добавленном файле.
Это сработало для меня; Ваш пробег может варьироваться.
Ответ 5
Я просто получил это, чтобы работать, ответив на ответ Аарона. Вместо
==== //path/to/depot/file#1 - /path/to/workspace/file ====
Я использовал
--- //path/to/file [TIMESTAMP GENERATED BY NORMAL DIFF]
+++ //path/to/file [TIMESTAMP GENERATED BY NORMAL DIFF]
@@ -1,1 +1,LEN @@
Затем убедитесь, что в начале каждой добавленной строки есть +
.
Ответ 6
Просто p4 распечатайте добавленные файлы (я знаю, что не очень) - но это определенно один из способов.