Как указать рабочую область Perforce на проект, который синхронизирован на двух машинах?
У меня есть проект с синхронизацией затмений, в котором я выполняю работу на своем компьютере с Windows, а затем синхронизирую и компилирую его на сервере сборки Linux. Тем не менее, рабочее пространство Windows связано с производительностью, а в Linux - нет. Проблема в том, что когда Eclipse синхронизирует эти два, права доступа испорчены на стороне linux, поэтому я не могу выполнить некоторые сценарии оболочки, которые обычно выполняются во время сборки. Обходной путь, который у меня есть, заключается в том, чтобы каким-то образом выполнить chmod все файлы *.sh перед выполнением сборки, но я бы предпочел знать о производительности в обоих местах (таким образом, я мог бы также фиксировать либо со стороны Linux, либо со стороны Windows). По соображениям производительности я не смог запустить eclipse на удаленном сервере сборки, поэтому это было единственное решение, которое я нашел. Кроме того, когда я пытался настроить второе рабочее пространство для стороны Linux, он выдавал мне ошибки, говорящие "не удалось заткнуть X". Я думаю, что главная проблема в том, что я имею дело с какой-то проблемой разрешений.
3 ответа
Возможно, я нашел ответ. Согласно исполнительной документации:
По умолчанию вы можете использовать только рабочее пространство на компьютере, указанное в поле Host:. Если вы хотите использовать одно и то же рабочее пространство клиента на нескольких машинах с разными платформами, удалите запись Host: и установите поле AltRoots: в спецификации клиента. Вы можете указать не более двух альтернативных корней рабочего пространства клиента. Местоположения должны быть видны со всех машин, которые будут их использовать, например, через монтирования NFS или Samba. Perforce сравнивает текущий рабочий каталог с основным Root: сначала, а затем с двумя AltRoots: если указано. Первый корень, соответствующий текущему рабочему каталогу, используется. Если корни не совпадают, используется основной корень. Примечание. Если вы используете каталог Windows в любом из ваших корневых клиентов, укажите каталог Windows в качестве основного корневого клиента: и укажите корневые каталоги других рабочих областей в поле AltRoots:. В следующем примере, если текущий рабочий каталог пользователя bruno находится в /usr/bruno, Perforce использует путь UNIX в качестве корневого корневого рабочего пространства клиента, а не c:\bruno_ws. Этот подход позволяет bruno использовать одну и ту же спецификацию рабочего пространства клиента как для разработки под UNIX, так и для Windows. Клиент: bruno_ws Владелец: bruno Описание: Создано bruno. Root: c:\bruno_ws AltRoots: /usr/bruno/ Чтобы узнать, какой корневой каталог рабочей области действует, введите команду p4 info и проверьте поле Client root:. Если вы редактируете текстовые файлы в одной и той же рабочей области с разных платформ, убедитесь, что используемые вами редакторы и настройки сохраняют окончания строк. Подробнее об окончаниях строк в кроссплатформенных настройках см. В Руководстве системного администратора Perforce.
Я сделал следующее, чтобы установить альтернативные корни в Perforce:
- Создано рабочее пространство в Windows
- Установите текущий клиент (рабочее пространство) с "p4 set P4CLIENT=workspace_name", я использовал Windows+Cygwin, чтобы сделать это
- Удалил "Хост" из этого клиента (рабочая область) "p4 client -o | grep -v Host: | p4 client -i" Я использовал Windows+Cygwin для этого
- В Linux добавлен альтернативный корень в P4V, не используйте ~, используйте абсолютный путь, я не тестировал переменные среды
- Перешли на рабочую область в P4V
- Получил последнюю версию P4V и проверил опцию "Force"
Рекомендации: