Выполните синхронизацию файлов депо.net API

Поскольку мне трудно понять документацию по API P4, мне нужна помощь. У меня есть папка в депо, скажем //root/a/... сначала я запускаю предварительный просмотр, чтобы узнать количество файлов, которые будут синхронизироваться в списке изменений, скажем, 123,

Client.ViewMap = new ViewMap();
Client.ViewMap.Add("//root/a/...", "//" + myWrkSpace + "/a/...", MapType.Include);
Options sFlags = new Options( SyncFilesCmdFlags.Preview, 123 );
rFiles = rep.Connection.Client.SyncFiles(sFlags, null);

В rFiles Я должен получить список файлов, которые будут синхронизироваться (предварительный просмотр синхронизации, я буду синхронизировать каждый файл в фоновом режиме), но он возвращает мне все файлы депо (файлы в //root)

Может кто-нибудь, пожалуйста, помогите? С уважением

1 ответ

Когда вы делаете:

Client.ViewMap = new ViewMap();
Client.ViewMap.Add("//root/a/...", "//" + myWrkSpace + "/a/...", MapType.Include);

вы просто устанавливаете некоторые данные локально в объекте Client вашей программы, а не на сервере.

Когда сервер работает:

rFiles = rep.Connection.Client.SyncFiles(sFlags, null);

он использует карту вида, которая хранится на сервере.

Если вы запускаете (из командной строки CMD.EXE и используете настоящее имя вашего рабочего пространства):

p4 client -o myWrkSpace

вы увидите фактическую карту просмотра для вашего рабочего пространства на сервере.

Бьюсь об заклад, вы увидите, что это:

//root/... //myWrkSpace/...

Вот почему вы получаете все файлы депо в вашей синхронизации.

Поэтому, если вы хотите изменить свою карту просмотра, вам нужно сделать больше, чем просто установить ее локально, вы должны обновить определение рабочей области на сервере перед запуском синхронизации.

Одна вещь, которая поможет вам отладить такого рода вещи, - это познакомиться с инструментом командной строки p4, чтобы позволить вам запускать команды из приглашения CMD.EXE, такие как:

p4 sync -n @123

это (я думаю) команда, которую вы пытаетесь запустить из своей программы API.

Затем вы можете увидеть, как эта команда работает из командной строки, а затем вы можете посмотреть в журнале вашего сервера и посмотреть, какие фактические команды выдает ваша программа API, и сравнить эти команды с теми, которые вы запускаете из командной строки.

Другие вопросы по тегам