Как Вы храните сторонние библиотеки в своем управлении исходным кодом?

Вы устанавливаете .parent и высоту, например, max-height: 150px;

26
задан ajma 9 April 2009 в 20:03
поделиться

14 ответов

  • Как: ветка поставщиков , как правило, является хорошим подходом

  • Когда ( третьих сторон) : для минимизации количества задействованных ссылок: вы можете добавить эти библиотеки в отдельную внешнюю ссылку (например, Maven), но это означает, что вам необходим доступ к этой дополнительной ссылке для каждой среды (разработка - интеграция - омологация - подготовка к производству - производство)

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

  • Почему (сохраните оба) : для развертывания причина:вы можете управлять полной конфигурацией (список элементов, которые вам нужны) в одной ссылке и запрашивать ее везде и всегда, когда вам необходимо:

    • разработка (вы запрашиваете, что вам нужно для разработки и выполнения вашего кода, включая третьи стороны, необходимые для компиляции / выполнения)
    • тесты (интеграция, омологация): вы запрашиваете точные теги, которые хотите обновить в своем рабочем пространстве тестирования, с помощью продукта
    • : вы точно определяете, что поступает в производство из одного источника: вашего SCM.

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

  • тесты (интеграция, омологация): вы запрашиваете точные теги, которые хотите обновить в своем рабочем пространстве тестирования, с помощью продукта
  • : вы точно определяете, что поступает в производство из одного источника: вашего SCM.
  • Для тестовых и производственных сред это также означает, что ваш собственный продукт ( упакованный результат того, что вы создаете) также должен входить в вашу SCM (только официальные выпуски, а не промежуточные, используемые внутри). .
    включая сторонние компоненты, необходимые для компиляции / выполнения)

  • тесты (интеграция, омологация): вы запрашиваете точные теги, которые хотите обновить в своем рабочем пространстве тестирования, с помощью продукта
  • : вы точно определяете, что поступает в производство из одного источника: вашего SCM.
  • Для тестовых и производственных сред это также означает, что ваш собственный продукт ( упакованный результат того, что вы создаете) также должен входить в вашу SCM (только официальные выпуски, а не промежуточные, используемые внутри). .
    это также означает, что ваш собственный продукт ( упакованный результат того, что вы создаете) должен также входить в ваш SCM (только официальные выпуски, а не промежуточные, используемые внутри).
    это также означает, что ваш собственный продукт ( упакованный результат того, что вы создаете) должен также входить в ваш SCM (только официальные выпуски, а не промежуточные, используемые внутри).
    Если другие проекты зависят от вашего продукта, они будут создавать свой собственный проект для вашей упакованной версии, хранящейся в SCM, а не для вашего исходного кода, который они каким-то образом перекомпилировали.

    Почему это важно?
    Потому что, в конце концов, в работе будет работать упакованная версия вашего продукта, а не ваш «перекомпилированный исходный код». Отсюда важность сделать весь ваш тест с конечной конечной формой вашего продукта, четко сохраненной и помеченной в вашем SCM.


    Мартин Лазар поднимает законную точку в его ответе

    Контроль источника называется контроль «источника», поскольку предполагается, что он управляет источниками.

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

    Plus, что позволяет некоторым из этих SCM предлагать функцию S "C" M (как в Источник Конфигурация Управление ) .
    Эта SCM (конфигурация) хранит не только «набор файлов», но также их отношения (или зависимости ) между этими наборами, чтобы вы могли запросить один набор файл, и "вытягивать" все остальные поставки, от которых зависит этот набор (для сборки, развертывания или запуска)

    10
    ответ дан 28 November 2019 в 07:47
    поделиться

    Предполагая, что вы используете .Net:

    Я создаю папку «Библиотеки» в моем проекте и системе управления версиями, которая содержит любые сторонние сборки.

    Затем мое решение ссылается на эти сборки, и мой процесс сборки переносит эту папку на наш сервер сборки.

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

    4
    ответ дан Miyagi Coder 28 November 2019 в 07:47
    поделиться

    Как хранить сторонние библиотеки, которые вы используете в своем проекте, в вашем контроле исходного кода?

    Как бинарный или источник или оба. Зависит от библиотеки.

    Когда вы будете хранить бинарные файлы в вашем контроле исходного кода?

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

    Когда бы вы сохранили код в вашем контроле исходного кода?

    Скажем, мы используем внутреннюю библиотеку A, но исправили некоторую ошибку, специфичную для продукта X. Тогда хранилище продукта X сохранит источник и создайте его.

    Вы когда-нибудь сохранили бы оба? В каких ситуациях вы бы это сделали?

    Да, все последние двоичные файлы хранятся в системе контроля версий.

    Таким образом, дерево выглядит так:

    product

     |-- src
    
     |-- build
    
     |-- lib
    
           |- 3rdparty
    
           |- internal
    

    ...

    5
    ответ дан 28 November 2019 в 07:47
    поделиться

    Управление исходным кодом называется контролем «источника», поскольку предполагается, что оно управляет источниками.

    В Java это Распространенный способ использования некоторой системы контроля версий для хранения источников и других ресурсов, таких как конфигурационные XML-файлы или изображения, и использование некоторого инструмента управления зависимостями, такого как Apache Maven, который будет хранить, загружать и управлять зависимостями вашего проекта от сторонних библиотек. Затем, когда вы переустанавливаете свою ОС, Maven может автоматически загружать ваши зависимости из центрального репозитория (или из ваших собственных частных репозиториев) и сохранять их в локальном кэше на вашем диске. Вам даже не нужно знать, где находится кеш:)

    Maven можно использовать и с другими языками, и, насколько я знаю, доступны плагины для .net и C / C ++, но я не знаю

    4
    ответ дан 28 November 2019 в 07:47
    поделиться

    Я не помещаю сторонний источник или двоичные файлы в SC. Мое обоснование было то, что мне не придется обновлять SC только для обновления библиотек. Я начинаю сожалеть об этом, хотя. Когда мне пришлось воссоздать проект, я обнаружил, что бегаю в поисках исходных кодов lib, а не просто синхронизируюсь с SC.

    3
    ответ дан 28 November 2019 в 07:47
    поделиться

    В недавнем Java-проекте я переключился на использование Maven - это было довольно приятно, поскольку это означало, что мне не нужно храните любые сторонние файлы jar в каталоге lib /. Во время компиляции maven вытягивает зависимости. Одним из приятных побочных эффектов является то, что банки имеют номер версии в имени файла.

    2
    ответ дан 28 November 2019 в 07:47
    поделиться

    Мой опыт заключается в том, чтобы создать папку "lib" и сохранить там все сторонние двоичные файлы. Я создам совершенно отдельное дерево для исходного кода для этих третьих сторон, если оно доступно.

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

    1
    ответ дан 28 November 2019 в 07:47
    поделиться

    Вам не нужно хранить сторонние библиотеки в вашем репозитории контроля версий. Эти библиотеки (например, SDL, libcurl и т. Д.) Всегда должны быть доступны в Интернете.
    Всего два raccomandations:

    • убедитесь, что в вашем коде четко указано, с какой версией библиотеки вы должны скомпилировать
    • , убедитесь, что эта конкретная версия всегда доступна в Интернете
    1
    ответ дан 28 November 2019 в 07:47
    поделиться

    Вообще говоря, я бы сделал примерно то, что было предписано другими пользователями.

    В случае Subversion, и я признаю, что не могу говорить о включении этой функции в случае других систем, можно использовать External для связи в хранилище, поддерживаемом в другом месте. При оформлении заказа / экспорте вы получите полную копию исходного кода, включая обновленный код из этого внешнего репозитория, за один раз.

    Это было особенно приятно для меня при разработке PHP / JS, так как нет проблем с сохранением двоичные файлы. Я бы оставил внешний вид Zend Framework, Doctrine ORM и jQuery в папке / lib / проекта. Каждое обновление дало бы мне полную обновленную копию всех необходимых файлов без какой-либо дополнительной работы, кроме добавления этого URL-адреса хранилища в свойство svn.

    1
    ответ дан 28 November 2019 в 07:47
    поделиться

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

    Если у вас есть источник, вы можете выбрать сохранение источника и сборку сторонних библиотек в процессе сборки.

    0
    ответ дан 28 November 2019 в 07:47
    поделиться

    Вы должны иметь возможность установить новую ОС, получить исходные коды из системы управления версиями, собрать и запустить. Так что да, вы должны поместить их в систему контроля версий.

    0
    ответ дан 28 November 2019 в 07:47
    поделиться

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

    Правка: О, и я называю мои "BinRef":)

    0
    ответ дан 28 November 2019 в 07:47
    поделиться

    Когда вы будете хранить двоичные файлы в системе управления версиями?

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

    • Тестирование приложений в среде, которая точно соответствует производственной, не всегда возможно.
    • Предыдущий программист мог не использовать систему управления версиями или использовать ее неправильно. Поэтому бывает сложно быть уверенным, что исходный код, который вы изменяете, соответствует версии, с которой работает пользователь.
    0
    ответ дан 28 November 2019 в 07:47
    поделиться

    Если вы используете git (что я рекомендую) и у вас есть исходный код сторонней библиотеки, то хранение библиотеки в собственном репозитории git и включение ее в качестве подмодуля - отличный вариант. настраивать.

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

    Подмодули Git позволяют указать, какая версия библиотеки требуется для проекта, что отлично подходит для обеспечения совместимости.

    1
    ответ дан 28 November 2019 в 07:47
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: