синхронизация p4, как вы исключаете файлы при использовании подстановочных знаков?

Я пытаюсь использовать синхронизацию p4 для синхронизации определенного каталога с заданным номером списка изменений с использованием подстановочных знаков, но я также хочу исключить список файлов, находящихся в этом каталоге (в подкаталогах), я пытался использовать - (как до, так и после использования путь с подстановочными знаками), но файл никогда не исключается, это команда, которую я пытаюсь:

p4 sync //Repo/Foo/... -//Repo/Foo/Bar/Foobar.txt

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


person snk_kid    schedule 12.10.2011    source источник


Ответы (3)


В вашем клиенте у вас будет несколько строк:

//Repo/Foo/... //my_client/Repo/Foo/...
-//Repo/Foo/subdirectory/... //my_client/Repo/Foo/subdirectory/...

Это позволит вам получить все в каталоге Foo и всех подкаталогах, кроме "subdirectory".

person Graeme Perrow    schedule 12.10.2011

Вы можете сделать это, если используете ярлык. Создайте метку в своем любимом редакторе (p4v или командная строка p4 label и добавьте две строки:

//Repo/Foo/...
-//Repo/Foo/Bar/Foobar.txt

В поле ревизии введите "#head" (включая кавычки!), если вы хотите получить последнюю версию или номер списка изменений. Дайте ярлыку имя, например «sync_butnot_foobar».

В командной строке теперь вы можете синхронизировать:

p4 sync @sync_butnot_foobar,@sync_butnot_foobar

Это имеет огромное преимущество перед изменением спецификации клиента и модели головки синхронизации. Если вы исключите файл из спецификации клиента, при следующей синхронизации этот файл будет переведен в версию 0, что, вероятно, не соответствует вашим ожиданиям.

person John Harvey    schedule 08.12.2013
comment
лол, имейте в виду, что это будет работать как новая спецификация клиента, если вы используете параметры по умолчанию... это означает, что вы будете синхронизировать с версией 0 для всех файлов, не указанных в метке. - person Saebin; 20.07.2017
comment
Это здорово! Кроме ревизии: поле должно быть "#head", а не @head - person Evgen; 18.04.2018
comment
@Saebin нет, если ты синхронизируешься с @label,@label - person oisyn; 16.07.2018

Короче говоря, вы не можете исключить файлы из синхронизации. Это можно сделать только в спецификации клиента. (Ну, это можно было бы сделать через таблицу защит, но я думаю, что это совсем другое дело).

Но если вы хотите синхронизировать определенную папку и только файлы в этой папке, используйте *

p4 sync //Repo/Foo/*

вы получите только файлы в папке Foo.

person Mark    schedule 12.10.2011
comment
проигнорируйте мое последнее сообщение, с которым я скоро говорил :/ - person snk_kid; 12.10.2011