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 распечатайте добавленные файлы (я знаю, что не очень) - но это определенно один из способов.