Структура дерева папок проекта SVN и структура дерева папок производства - PullRequest
1 голос
/ 16 июня 2010

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

Допустим, у нас теперь есть:

  1. the EcommerceApp (основное приложение электронной коммерции)
  2. a Server-file-mgr компонент (компонент для просмотра / управления файлом на сервере)
  3. a Mylib (библиотека полезных функций)
  4. a MailistApp (другое основное приложение для обработки почтовых списков)

...

  • EcommerceApp для работы требуется Server-file-mgr компонент и Mylib
  • Server-file-mgr нужно Mylib для работы
  • MaillistApp для работы требуется компонент Server-file-mgr и Mylib.

Моя идея состоит в том, чтобы просто структурировать дерево папок проекта SVN, поместив все на одном уровне:

trunk/EcommerceApp
trunk/Server-file-mgr
trunk/Mylib
trunk/MaillistApp

Но в реальной жизни, чтобы эти приложения работали, структура дерева папок должна быть следующей:

EcommerceApp
 |_ Mylib
 |_ Server-file-mgr

MaillistApp
 |_ Mylib
 |_ Server-file-mgr

Я имею в виду Mylib и Server-file-mgr должны находиться внутри папки EcommerceApp/MaillistApp.

Как бы вы тогда структурировали папку SVN, как я, или другим / лучшим / умным способом ???

РЕДАКТИРОВАТЬ: somoene в приведенных ниже ответах предложил структурировать SVN в качестве реальных папок, но тогда у меня в SVN будет две копии одной и той же папки, то есть у меня будет ствол / EcommerceApp / Mylib и другая копия в стволе / MaillistApp / Mylib, как бы я их синхронизировал ???

Ответы [ 2 ]

4 голосов
/ 16 июня 2010

Я бы предложил второй (как для реальной жизни).Но я бы предложил создать отдельные «Модули» для MyLib и Server-file-mgr (со своими собственными стволом / тегами / ветвями), если они используются где-либо еще, кроме этого продукта, и используют svn: externals для их соединения.Вы можете обрабатывать их как отдельные библиотеки.

РЕДАКТИРОВАТЬ:

trunk/
  EcommerceApp
   |_ Mylib
   |_ Server-file-mgr

  MaillistApp
   |_ Mylib
   |_ Server-file-mgr

Вы можете сделать следующее с svn: externals: Вы должны поместить их в папку Project / trunk.

Project/
   |_ trunk/
        |_ EcommerceApp (link to MyLib->tags/RELEASE-1.0)
        |_ MaillistApp (link to Server-file-mgr->tags/RELEASE-1.0)
   |_ tags
   |_ branches

MyLib/
   |_ trunk
   |_ tags
       |_ RELEASE-1.0
   |_ branches

Server-file-mgr/
   |_ trunk
   |_ tags
       |_ RELEASE-1.0
   |_ branches

Каждый раз, когда вы создаете новую версию MyLib или Server-file-mgr, вы можете просто изменить svn: externals в Project / trunk.Таким образом, у вас есть отдельная разработка для ваших компонентов.

0 голосов
/ 16 июня 2010

Вы можете использовать символические ссылки (если вы используете linux), если единственным требованием является возможность доступа к ним локально из каталогов EcommerceApp и MaillistApp.SVN умеет правильно хранить символические ссылки.

trunk/EcommerceApp
 |-  Mylib -> ../Mylib
 |-  Server-file-mgr -> ../Server-file-mgr
trunk/Server-file-mgr
trunk/Mylib
trunk/MaillistApp
 |-  Mylib -> ../Mylib
 |-  Server-file-mgr -> ../Server-file-mgr
...