Ответ 1
Я продолжаю говорить, что мне не нравится отвечать на мой собственный вопрос, но я собираюсь сделать это здесь. Я приветствую всех, кто хочет поделиться лучшими решениями и сценариями. Я особенно хотел бы, чтобы кто-нибудь показывал мне, что это не нужно, что Perforce действительно имеет эквивалент svn/git/hg/bzr status
.
--- + A: git/hg/bzr/svn status
= p4 opened
+ p4 reconcile -n
В perforce требуется, по меньшей мере, две отдельные команды, чтобы приблизиться к тому, что другие инструменты VCS выполняют с помощью одной команды, чтобы обеспечить краткое описание состояния рабочей области по депо:
p4 opened
- список файлов, которые вы открыли в рабочей области
p4 reconcile -n
- для списка файлов, которые не открываются по запросу, но с которыми вы сделали локальные изменения.
(p4 reconcile -n
сказать "не вносить никаких изменений.)
--- + Подходит для псевдонима или быстрого набора текста
Я объединяю их следующим образом:
p4 $P4OPTS opened
p4 $P4OPTS reconcile -n | sed -e 's/ - / - RECONCILE TO MAKE: /'
Часть sed, чтобы лучше различать статус файлов, которые уже были открыты из состояния файлов, не открытых по perforce. Но я отмечаю, что это небезопасно, когда в файле может быть строка "-".
--- + Упомянутый
Поскольку мне часто нужны локальные пути, в настоящее время я использую следующую оболочку script my-p4-status
, чтобы дать мне нечто большее, чем то, с чем я привык, из другой команды статуса VCSes:
#!/bin/bash
# Perforce lacks a single command to tell you the status of a workspace,
# the equivalent of hg/bzr/git status.
# Warning: "p4 status" is not actually a read-only query!!!
# "p4 status" is more like "p4 reconcile" - it actually opens files to edit, add, or delete (-e -a -d)
# p4 opened only reports on the status of files currently opened by Perforce
# It is necessary to combine "p4 opened" and "p4 reconcile -n" to get a net overview.
# TBD: convert to local file path, rather than depot path.
# (Not a simple sed-xargs-p4_fstat pipeline)
P4OPTS=''
if [ "$1" == "-ztag" ] || [ "$1" == "-verbose" ]
then
shift
P4OPTS="-ztag"
fi
case $P4OPTS in
-ztag)
p4 $P4OPTS opened
p4 $P4OPTS reconcile -n
;;
*)
echo '#### p4 opened - Perforce files already opened ###'
p4 $P4OPTS opened
echo '#### p4 reconcile -n --- local edits, not opened in Perforce. Run p4 reconcile to actually open. ###'
p4 $P4OPTS reconcile -n | sed -e 's/ - / - RECONCILE TO MAKE: /'
esac
--- + лучше? Пожалуйста, поделитесь!
Если у вас есть что-то лучше, поделитесь.