Макрос проверки выполнения для XCode4 - PullRequest
6 голосов
/ 04 апреля 2011

Я бы хотел установить макрос в XCode 4 для извлечения текущего файла из Perforce.Как я могу это сделать?У меня нет , есть результаты, интегрированные с моим проектом, и я не хочу этого делать.Это довольно легко в Visual Studio, но я не знаю эквивалент XCode.

Ответы [ 4 ]

4 голосов
/ 01 мая 2013

Только что натолкнулся на это на Perforce.com как на средство для этой работы.Я попробовал это, и это довольно хорошо.

http://answers.perforce.com/articles/KB/2997

Согласно комментарию, это работает и в Xcode 5.

И теперь он протестирован и работает вXcode 6!

РЕДАКТИРОВАТЬ: Если это не сработает, и вы используете OS X Mavericks, этот парень исправил сценарий, чтобы продолжать работать.Просто убедитесь, что скрипт ссылается на p4 правильно.Мне пришлось изменить его с /usr/local/bin/p4 на /usr/bin/p4.

http://forums.perforce.com/index.php?/topic/2830-xcode-501-x-mavericks-perforce-integration-not-working/#entry11319

2 голосов
/ 09 мая 2012
  1. Убедитесь, что инструмент командной строки 'p4' установлен в '/usr/local/bin/'.
  2. Убедитесь, что переменные среды Perforce настроены правильно.Я использую файл «Perforce.rc» в корне каждого клиентского рабочего пространства с именем клиента (P4CLIENT) и портом (P4PORT).Не забывайте о P4USER, P4PASSWD, P4CONFIG и т. Д. *
  3. Создайте следующий скрипт в папке ~ / bin и убедитесь, что права доступа установлены так, чтобы он выполнялся (755 должен работать).*
  4. Перейдите в настройки в Xcode и выберите «поведение».
  5. Прокрутите вниз до «Unlock file»
  6. Прокрутите вниз еще немного и установите флажок рядом с «Run»
  7. Выберите «Choose Script ...» и укажите его наследующий скрипт:

xcodeunlock.sh

#!/bin/bash

# Xcode4 doesn't setup the environment
source ~/.bashrc

# Delete the URL part from the file passed in
fn=${BASH_ARGV#file://localhost}
echo "fn=" $fn

if [ -a ${fn} ]; then
    res=$(/usr/local/bin/p4 edit ${fn})

    # TODO: Report the status back to the user in Xcode
    # This output goes to the console.
    echo $res
else
    echo "FnF" ${fn}
fi

Как только это настроено правильно, разблокировка файла в Xcode должна запустить этот скрипт и попытатьсяоформить заказК сожалению, любой вывод идет в /var/log/system.log.Я не уверен, как уведомить Xcode 4 о сбое в этом сценарии.

1 голос
/ 24 января 2012

Бессмысленно пытаться заставить XCode работать с Perforce. Вот решение, которое я придумал:

  • Быстрая настройка
  • Легко вписывается в вашу мышечную память, поэтому вам не нужно думать о проверке файлов
  • вообще не требует подкормки

Единовременная настройка следующим образом:

  1. Загрузите и установите бесплатное приложение "DTerm" из Decimus Software.
  2. Убедитесь, что у вас установлена ​​утилита командной строки Perforce. Введите «p4» в окне терминала и посмотрите, распознает ли она эту команду. Если нет, вам нужно перейти на веб-сайт Perforce и найти и загрузить то, что в настоящее время называется «Клиент командной строки Perforce (P4)». Там нет установщика; просто сохраните его из браузера прямо в /usr/bin (или где-либо еще) и выполните команду chmod + x. Официальные примечания по настройке и, если вам необходимо выполнить какие-либо специальные трюки с переменными окружения, см. эту техническую заметку .

Как только вы это сделаете, предположим, что вы находитесь в XCode и просматриваете файл с исходным кодом, который хотите проверить. Вот Ригамароль:

  1. Файл, отображаемый в активном редакторе XCode
  2. Нажмите Shift Command Enter, чтобы открыть окно DTerm
  3. Введите p4 edit, а затем нажмите Shift Command V, чтобы вставить имя файла активного файла, и нажмите return
  4. Perforce проверяет файл, и DTerm показывает вам статус / ошибки.
  5. Нажмите «escape», чтобы закрыть окно DTerm
  6. Начните вносить изменения в файл в XCode. XCode может (ошибочно) сказать, что файл предназначен только для чтения, потому что он тупой и не знает, что он сделан из режима «только чтение» для чтения и записи, поэтому вам нужно нажать «Разрешить редактирование». Сначала я этому не доверял и несколько раз проверил, но теперь у меня слепая вера в то, что он поступает правильно.

Я давно не настраивал это, поэтому, пожалуйста, дайте мне знать, если у вас возникнут какие-либо глюки, и я обновлю свою информацию здесь, чтобы сделать ее максимально безболезненной. Но в остальном это лучшее решение, которое я нашел.

1 голос
/ 08 апреля 2011

Ближайший сервис, о котором я могу подумать, это сервис, поэтому похоже, что XCode 4 Perforce Services может справиться с этой задачей. Впрочем, я не пробовал это лично. Я наткнулся на это в этом вопросе .

...