Система управления версиями для Linux

То, в чем мы нуждаемся в нашей фирме, является своего рода инструментом управления версиями для Linux/C++. Наши продукты состоят из нескольких библиотек и файлов конфигурации. Здесь я перечислю основные характеристики, которые мы хотим, чтобы такая система имела:

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

  • Знайте, как создать продукты, которые это обрабатывает. Или определенный файл типа "build" или еще лучше - способность читать и понять make-файлы.

  • Работа с SVN, таким образом, это может проверить на новые выпуски оттуда и делает сборку.

  • Генерируйте некоторые установщики - в об/мин или tar.gz формате. С этой целью это должно смочь понять формат файла спецификации об/мин.

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

7
задан Yordan Pavlov 19 February 2010 в 14:42
поделиться

5 ответов

В проекте, над которым я сейчас работаю, мы используем cmake и другие инструменты Kitware для решения большинства этих проблем для машинного кода (C ++). Отвечая по пунктам:

  • Скрипты cmake обрабатывают зависимости для наших различных проектов. У нас есть граф зависимостей, но я не знаю, это самодельный скрипт или это функциональность, которую предоставляет cmake.

  • Итак, cmake генерирует make-файлы, относящиеся к платформе. Я создаю проекты для eclipse cdt и visual studio, если его попросят сделать это в случае разработки.

  • В Cmake есть несколько инструментов, ctest и cdash, которые мы используем для ежедневной сборки и просмотра результатов теста.

  • Для создания установщика в cmake есть cpack. Всего из одного сценария он может генерировать файлы tar.gz, deb или rpm в Linux или автоматически сгенерированный сценарий NSIS для создания установщиков в Windows.

Для кода Java мы используем maven и hudson, о которых здесь уже упоминалось.

1
ответ дан 7 December 2019 в 14:31
поделиться

Вам следует рассмотреть возможность использования смеси между Hudson, Maven (для управления сборкой), Ivy (для управления зависимостями) и Archiva (для архивации артефактов).

Также, если вы ищете кросс.компиляцию, обратите внимание на Make Project Creator (MPC) и Bakefile.

Удачи!!!

2
ответ дан 7 December 2019 в 14:31
поделиться

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

module M
  def t
    @t
  end
end

class A
  include M
  def initialize(t)
     @t= t
  end
end

A.new(23).t # => 23

Если вы не хотите получить доступ к @ t , когда он не определен в вашем классе, прежде чем вы сможете сделать этот путь

module M
  def t
    instance_variable_defined?("@t") ? @t : nil
  end
end
-121--2457407-

вы можете прервать предыдущий запрос

var xhr = null;
$('#SearchField').keyup(function(e) {
  if (xhr !== null) xhr.abort ();
  xhr = $.post(
    ...
  );
});

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

-121--4746152-

Maven имеет собственный подключаемый модуль кода . Я не думаю, что он сделает все, что вы хотите, но он хорошо отслеживает номера версий зависимостей, построит артефакты и будет работать с вашим VCS.

0
ответ дан 7 December 2019 в 14:31
поделиться

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

http://www.drdobbs.com/architect/218400678

1
ответ дан 7 December 2019 в 14:31
поделиться
  • Без понятия
  • cmake/scons: Я использовал cmake, но не очень его люблю, но я слышал очень хорошие отзывы о scons. Но scons основан на python, поэтому вам нужно иметь установленный python на машинах для сборки/разработки.
  • Я использую Hudson, у которого есть плагин для выборки из svn. Он работает разумно в целом, и, в частности, собирает только если какой-то файл изменился в обновлении svn. С Hudson легко начать работу. Hudson основан на java и довольно популярен среди Java-сообщества. Это означает, что он достаточно кроссплатформенный, но вам нужно иметь установленный JRE на машине сборки.
  • Вероятно, в hudson можно вызвать какой-нибудь инструмент rpm.
0
ответ дан 7 December 2019 в 14:31
поделиться
Другие вопросы по тегам:

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