Консолидация Выполните операции над файлами `add` и` edit` - PullRequest
1 голос
/ 30 мая 2019

Для автоматизации постановки Perforce я сталкиваюсь с дилеммой, что add и edit - это две разные операции, и они работают с файлами с разным статусом SCM, то есть "уже в SCM или нет".

Это отличается от мерзавца, где постановка равномерно

Я хотел бы иметь что-то вроде псевдокода:

filepath = '/path/to/myfile.ext'
if p4.is_under_scm(filepath):
    p4.edit(filepath)
else:
    p4.add(filepath)

или, что еще лучше, просто скройте детали с помощью:

p4.staging(filepath)

Как мне этого добиться, вызвав p4 программу командной строки ?. Сейчас я не использую привязки к языку программирования.

1 Ответ

2 голосов
/ 30 мая 2019

Возможно, вы захотите использовать команду p4 reconcile, которая автоматически открывает файлы рабочей области для действия, которое соответствует их текущему состоянию относительно хранилища.

Имейте в виду, что если вы идете по этому пути, reconcile работает только с неоткрытыми файлами, которые отличаются от версии депо, поэтому он предназначен для использования после внесения локальных изменений (это отличается от стандартного рабочего процесса, в котором вы открываете файл с помощью p4 edit до его редактирования - идея в том, что вы используете reconcile, чтобы исправить положение после того, как вы 'пришлось работать отключено или что-то в этом роде).Кроме того, если вы передумали в отношении того, что вы делаете с файлом (например, вы удалили локальную копию после того, как она была открыта для edit, но перед вами submit), вам может понадобиться revert -k его и повторно- reconcile чтобы убедиться, что он открыт для правильного действия.

Для чего-то, что соответствует псевдокоду в вашем вопросе, вы, вероятно, захотите команду p4 have, которая сообщит вам, соответствует ли локальный файл депоревизия (и если да, то какая).p4 edit работает только с файлом, который вы have, тогда как p4 add будет для файла в вашем рабочем пространстве, который не соответствует существующему файлу депо.(Очень тонкий момент здесь - возможно, что файл сопоставляется с файлом депо, несмотря на то, что он не был синхронизирован из хранилища! Если это так, вы столкнетесь с конфликтом, когда будете отправлять своиadd.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...