Что означает команда p4, эквивалентная статусу git/hg/bzr/svn? (Подсказка: не `p4 status`)

Q: что эквивалентно для команды статуса других инструментов управления версиями?

например. git status или hg status или bzr status или svn status? (Смутно, cvs update -nq - самая близкая вещь для этой системы управления версиями.)

Подсказка: это НЕ p4 status. Во-первых, p4 status не является командой статуса только для чтения, но фактически изменяет состояние рабочей области - она ​​фактически добавляет локальные изменения в ожидающий список изменений. Во-вторых, p4 status не сообщает вам файлы, находящиеся на ожидающих списках изменений.

Похоже, какая-то комбинация p4 status и p4 opened необходима, чтобы получить минимальный минимум того, что делают другие VCS в одной команде.

ДЕТАЛЬ:

В большинстве систем управления версиями есть команда, которая может быстро сообщить вам о статусе рабочего пространства. Информация, такая как:

  • какие файлы проверяются для редактирования (если VCS использует проверки)
    • который из этих проверенных файлов был локально изменен или удален.
  • какие файлы были изменены, даже если они не были извлечены
    • например. какие файлы могут иметь изменения, которые вы хотите объединить
  • возможно, какие файлы более недавно обновлены в репозитории, чем в вашей рабочей области
    • например. изменения, которые вы можете захотеть объединить в свое рабочее пространство.
  • какие файлы находятся в рабочей области, но не находятся (пока) под управлением версии
    • например. какие файлы вы можете захотеть добавить в систему контроля версий.
    • или, возможно, добавить в свой .hgignore/ .gitignore/... игнорировать шаблоны файлов
  • какие файлы находятся под контролем версий, но не находятся в рабочей области
    • например. какие файлы вы хотите удалить из своей системы контроля версий.
    • или какие файлы вы случайно удалили

Точно, какая информация о статусе предоставляется, зависит от VCS. Например. Perforce основан на проверке, но большинство современных инструментов управления версиями не являются.

Но... почти все инструменты управления версиями имеют одну, простую команду, которая сообщит вам о таком статусе.

За исключением, видимо, perforce.

... Я могу привести примеры того, что git/hg/bzr/svn status делает в одной команде, но для perforce требуется, по крайней мере, две команды для предоставления.

Ответ 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

--- + лучше? Пожалуйста, поделитесь!

Если у вас есть что-то лучше, поделитесь.