Какой самый быстрый способ взаимодействия с SourceSafe? Командная строка или объектная модель? - PullRequest
3 голосов
/ 18 декабря 2008

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

В настоящее время мы используем инструмент командной строки ss.exe для взаимодействия с SourceSafe. Команды, которые мы используем, предназначены для рекурсивного получения источника проекта и данных, извлечения файлов версий, регистрации обновленных файлов версий и маркировки. Однако я знаю, что SourceSafe также поддерживает объектную модель.

  • Кто-нибудь имеет опыт работы с этой объектной моделью?
  • Предоставляет ли это какие-либо преимущества по сравнению с использованием инструмента командной строки, которые могут быть полезны в нашем процессе?
  • Есть ли недостатки?
  • Получим ли мы увеличение производительности от использования объектной модели в командной строке?

Ответы [ 6 ]

2 голосов
/ 18 декабря 2008

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

Стоимость переписывания для использования объектной модели, вероятно, больше, чем было бы сэкономлено, если оставить все как есть. Если у вас нет определенной проблемы с затраченным временем, я сомневаюсь, что это будет для вас значительным решением.

Вы можете исследовать теневые каталоги, чтобы всегда была доступна последняя версия, чтобы вам не приходилось каждый раз выполнять 'getlatest' и вы могли убедиться, что вы разговариваете с локальным VSS (так как все команды выполняются непосредственно в файловой системе, поэтому операции WAN чрезвычайно дороги).

В противном случае, вы застряли, если не хотите использовать другой SCM (и я рекомендую SVN - для него есть кодовый код превосходный , с примером кода, показывающим, как использовать Объектные модели VSS и SVN)

1 голос
/ 18 декабря 2008

В ответ на единственную часть вашего вопроса, которая, по-видимому, имеет какое-то значение - переключение на объектную модель не будет быстрым, поскольку «медлительность» исходит из протокола, используемого для обмена файлами между VSS и базой данных. - см. мой другой ответ.

Продукт, о котором я говорил, работает вместе с VSS для решения вашей проблемы. Вы по-прежнему используете VSS и ahev, чтобы иметь лицензии на его использование ... это просто ускоряет его там, где вам это нужно.

Не уверен, почему ты меня пометил?!

1 голос
/ 18 декабря 2008

VSS использует смонтированную файловую систему для совместного использования базы данных. Когда вы получаете файл от SourceSafe, он работает на уровне файловой системы, что означает, что вместо того, чтобы просто отправить вам файл, он отправляет вам все блоки диска, чтобы найти файл и файл. Это добавляет намного больше транзакций и дополнительных данных.

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

Существует продукт, который среди прочего повышает скорость VSS в ~ 12 раз при использовании по сети. Это достигается путем реализации протокола клиент-сервер. Это также может быть записано, что полезно при использовании VSS через Интернет.

Я не работаю или не имею с ними связи, я просто использовал его в предыдущей компании.

см. SourceOffSite по адресу www.sourcegear.com.

1 голос
/ 18 декабря 2008

С тех пор мы обновили систему контроля версий до Team Foundation Server. Когда мы использовали VSS, я заметил то же самое в журналах сборки CruiseControl.Net (предостережение: я никогда не исследовал, что использует CC; я предполагаю командную строку).

Исходя из моего опыта, я бы сказал, что проблема в VSS. Наша TFS расположена на расстоянии более 1000 миль и быстрее, чем когда серверы были разделены примерно 6 футами Ethernet-кабелей.

Редактировать: чтобы надеть мою деловую шляпу, если вы сложите время, потраченное на ожидание сборок, + времени, потраченного на их ускорение, может быть достаточно для обновления или дополнения VSS, упомянутого в другом посте (уже + 1) Я бы не стал тратить много времени на создание решения на VSS.

0 голосов
/ 18 декабря 2008

Как используется инструмент командной строки? Вы случайно не вызываете инструмент один раз для каждого файла?

Звучит не так («рекурсивное получение» в значительной степени подразумевает, что вы не), но я подумал, что могу добавить эту мысль. У других могут быть проблемы, подобные вашей, и это кажется пугающе обычным для источника Системы управления.

ClearCase на одном клиенте работала как полноценная собака, потому что это делали клиентские скрипты. Каждый вызов командной строки создавал соединение, аутентифицировал пользователя, получал файл и закрывал соединение. Десятки тысяч раз. Ох, опасности интерфейса командной строки и немного Perl.

С помощью API вы, вероятно, будете правильно держать сеанс открытым между действиями.

0 голосов
/ 18 декабря 2008

Я держу пари, что запуск Объектной Модели будет медленнее как минимум на 2 часа ....; -)

...