Как использовать Subversion для некомпилируемого языка?

StackOverflow https://stackoverflow.com/questions/1252987

  •  12-09-2019
  •  | 
  •  

Вопрос

Я хочу использовать Subversion с системой разработки на основе сценариев, и мне интересно, что делать по-другому, чем в моей обычной ситуации (C#/.NET).

Обычный ежедневный цикл обновления/фиксации будет работать нормально, как и отслеживание изменений и сравнение версий.Мне бы хотелось получить совет по поводу обработки развертывания.

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

Изменения сценария не обязательно включаются в следующий выпуск — они могут быть предназначены для выпуска после этого или следующего за ним.

В идеальном мире я хотел бы иметь возможность разместить сценарий в определенном выпуске, скажем, в выпуске «сентябрь 2009 г.», после того как он будет протестирован, а затем извлечь все сценарии для этого выпуска с помощью одной команды.

Обновлять

Насколько я могу судить, ни теги, ни списки изменений не помогут.

Списки изменений не являются постоянными (не существуют в репозитории), и мне нужно решение, которое позволит просмотреть их намного позже.

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

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

Обновление 2

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

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

Аналогично с СтарТим, я могу применить метку к редакции файла и извлекать только файлы с этой меткой.

Это было полезно?

Решение

«В идеальном мире я хотел бы иметь возможность разместить сценарий в определенном выпуске, скажем, в выпуске «сентябрь 2009 года», после того как он будет протестирован, а затем извлечь все сценарии для этого выпуска с помощью одной команды. "

Это именно то, что теги предназначены для.

Другие советы

Вы можете управлять своими «будущими» выпусками с помощью веток Subversion.Когда вы вносите изменение, предназначенное для будущего выпуска, зафиксируйте его в соответствующей ветке.Когда придет время собрать все эти будущие функции в ствол, объедините ветку.

На самом деле это не сильно отличается от рабочего процесса использования Subversion с компилируемым языком или для любых других целей.

См. Общие шаблоны ветвления раздел книги Subversion для получения дополнительной информации.В частности, раздел «Ветви функций» наиболее подходит для вашей ситуации.

Одним из решений было бы запустить новую ветку, используя svn mkdir (вместо svn copy), а затем выборочно копируя необходимые файлы из основной ветки посредством svn copy

Я вижу проблему - которая не имеет никакого отношения к SVN.Вы хотите хранить некоторые файлы в ветке выпуска, но не другие.Поэтому либо разветвите весь каталог выпуска, а затем удалите файлы, которые вы не хотите там показывать;или создайте новый пустой каталог и скопируйте только те файлы, которые вам нужны.

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

Я считаю, что с svn 1.6 вы можете использовать внешние устройства, указывающие на отдельные файлы.Итак, если вы хотите, вы можете создать пустую древовидную структуру и определить для нее набор внешних объектов, которые вносят в структуру нужные вам файлы.Это даст вам своего рода «живой вид» ветки.

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

Обратной стороной будет то, что будет сложно переключиться на другую ветку (скажем, на старый тег из-за проблемы в новой версии) — вам придется вручную редактировать все определения внешних элементов.Это может не быть проблемой, если все они находятся в одном каталоге, но может стать проблемой, если вам придется их искать.

Небольшая информация о внешних файлах доступна в svn. Примечания к выпуску 1.6

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

Например, чтобы отразить ваш пример «метки», вы можете создать свойство для каждого файла, который вы решите включить в конкретный выпуск.В этом случае создайте свойство «Сентябрь 2009 г.» со значением «true».

После этого при создании пакета развертывания можно будет выбрать только файлы со свойством «Сентябрь 2009 г.».

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top