Упорядочивание списка выбора в алфавитном порядке в MVC

аналогичный пример

Проблема в том, что в моем списке выбора могут быть данные (плюс это ' История репозитория не обязательно важна в этом частном случае. Проанализировав ...

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

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

    +---------->include files
    |                ^
    |                |
library A -----> library B <----- library C <----- library D
  ^  ^                                |                ^
  |  |                                |                |
  |  +--------------------------------+                |
  |                                                    |
application 1        application 2 --------------------+
  ^
  |
script -----> configuration information

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

Я придумал следующую структуру:

trunk/
  include/
  lib/
    library A/
    library B/
    library C/
    library D/
  app/
    application 1/
    application 2/
tags/
  1.0/
    include/
    lib/
      library A/
      library B/
      library C/
      library D/
    app/
      application 1/
      application 2/
  1.1/
    include/
    lib/
      library A/
      library B/
      library C/
      library D/
    app/
      application 1/
      application 2/
  ...

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

Проблема с этим решением заключается в том, что библиотеки не имеют отдельных каталогов тегов для самих себя, и что я хочу иметь только выпуск, который состоит из компонентов с тегами, и это решение не отображает, какие компоненты имеют какие версии тегов в выпуске. Я подумал об использовании отдельных репозиториев, а затем создал главный репозиторий, в котором есть подкаталог релизов, где я связываю все необходимые компоненты с помощью `svn: externals 'и подкаталог определенных тегов, но разные библиотеки и включаемые файлы зависят друг от друга, и я не Не вижу, как разделить код на отдельные объекты.

Есть идеи?

=============== вопрос, продолжение 28-1-2011 ====== =========

Хорошо, я нарисовал график того, как я планирую новый макет. Цель - связать и конкретный подкаталог тегов, но разные библиотеки и включаемые файлы зависят друг от друга, и я не понимаю, как разделить код на отдельные объекты.

Есть идеи?

========= ====== вопрос продолжен 28-1-2011 ===============

Хорошо, я нарисовал график того, как я планирую новый макет. Цель - связать и конкретный подкаталог тегов, но разные библиотеки и включаемые файлы зависят друг от друга, и я не понимаю, как разделить код на отдельные объекты.

Есть идеи?

========= ====== вопрос продолжен 28-1-2011 ===============

Хорошо, я нарисовал график того, как я планирую новый макет. Цель - связать теги различных зависимостей с методом svn: externals внутри одного репозиторий, например, я бы установил svn: externals в trunk / projects / lib / library2 / dependencies on ^ / tags / projects / include / std / 1.3.

trunk/
  projects/
    include/
      std/
    lib/
      library1/
        dependencies/
          std/ --> tags/projects/include/std/1.2
      library2/
        dependencies/
          std/ --> tags/projects/include/std/1.2
          library1/ --> tags/projects/lib/library1/1.4.3
      library3/
        dependencies/
          std/ --> tags/projects/include/std/1.3
          library1/ --> tags/projects/lib/library1/1.4
    app/
      application1/
        dependencies/
          library3/ --> tags/projects/lib/library3/1.1
      application2/
        dependencies/
          library1/ --> tags/projects/lib/library1/2.1
      application3/
        dependencies/
          std/ --> tags/projects/include/std/1.2
          library2/ --> tags/projects/lib/library2/1.5.2
    config/
      configuration1/
        dependencies/
          application1/ --> tags/projects/app/application1/2.3
      configuration2/
        dependencies/
          application1/ --> tags/projects/app/application1/1.6
      configuration2/
        dependencies/
          application2/ --> tags/projects/app/application1/1.6
tags/
  projects/
    include/
      std/
        1.2/
        1.3/
    lib/
      library1/
        1.4.3/
        1.4/
        2.1/
      library2/
        1.5.2/
      library3/
        1.1/
    app/
      application1/
        1.6/
        2.3/
branches/
  ...

Остающиеся вопросы:

  • Работоспособна ли эта конструкция или вы видите какие-либо серьезные недостатки?
  • Что произойдет, если Копирую библиотеку в каталог тегов? Это скопирует svn: также свойство externals. Будет ли это вызывать проблемы, или такое поведение желательно?
  • Я мог бы указать явную ревизию для всех внешних элементов, но тег в любом случае не должен изменяться, поэтому не хватит ли каталога?
  • Будет ли репозиторий разделен на разработку Репозиторий и репозиторий, использующий svn: external, быть лучшим решением? См. Ответ «варианты использования» в вопросе Каковы преимущества использования «svn: externals»? .

6
задан Community 23 May 2017 в 12:32
поделиться