Ik heb een aantal projecten gebaseerd op Zend Framework 2 onder versiebeheer met Git. Binnen deze projecten heb ik een aantal modules die vaak terugkomen. Bijvoorbeeld een Authenticatie module. Deze modules zijn ook een aparte git repo. Binnen het hoofd project laad ik deze dan in als submodule. Een hoop project specifieke configuratie is redelijk goed te plaatsen binnen de local.config.php bestanden, die vervolgens in .gitignore terecht komen. Helaas loop ik nu tegen het probleem dat ik project specifieke aanpassingen moet doen waarvan ik niet zie hoe ik die in local.config of buiten de submodule kan plaatsen.
Een voorbeeld is wellicht het duidelijkst. Voor mijn model gebruik ik Doctrine 2 en in mijn Authenticatie module heb ik dus een entity User
Neem nu een project dat gebruik maakt van deze Authenticatie submodule voor bijvoorbeeld een blog. De User entity moet nu gekoppeld worden aan BlogPost Entity als een User gebruikt wordt als auteur voor blogposts. Echter deze OneToMany relation moet in de User.php file komen te staan, maar zijn alleen relevant voor het main project en niet voor de Authenticatie submodule. Ik zie niet hoe ik deze project specifieke code kan plaatsen in een soort locale config, en het zal moeten worden opgenomen in de versioning van het main project en de authenticatie submodule.
De vraag is nu, wat is de beste manier om dit onder te brengen in git. Waar ik zelf aan dacht is om voor ieder hoofd project de Authenticatie module als git submodule in te laden onder een nieuwe branch, specifiek voor dat project. Alle project specifieke code gaat dan naar de branch en algemene submodule changes kunnen naar master.
Ik heb beperkt ervaring met git en weet niet precies hoe dit zou moeten, of dit de beste manier is, of dat dit uberhaupt wel gaat werken. Alle input is welkom
Een voorbeeld is wellicht het duidelijkst. Voor mijn model gebruik ik Doctrine 2 en in mijn Authenticatie module heb ik dus een entity User
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <?php namespace SphAuthentication\Entity; /** * User * * @ORM\Table(name="users") * @ORM\Entity */ class User { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ protected $id; ... } |
Neem nu een project dat gebruik maakt van deze Authenticatie submodule voor bijvoorbeeld een blog. De User entity moet nu gekoppeld worden aan BlogPost Entity als een User gebruikt wordt als auteur voor blogposts. Echter deze OneToMany relation moet in de User.php file komen te staan, maar zijn alleen relevant voor het main project en niet voor de Authenticatie submodule. Ik zie niet hoe ik deze project specifieke code kan plaatsen in een soort locale config, en het zal moeten worden opgenomen in de versioning van het main project en de authenticatie submodule.
De vraag is nu, wat is de beste manier om dit onder te brengen in git. Waar ik zelf aan dacht is om voor ieder hoofd project de Authenticatie module als git submodule in te laden onder een nieuwe branch, specifiek voor dat project. Alle project specifieke code gaat dan naar de branch en algemene submodule changes kunnen naar master.
Ik heb beperkt ervaring met git en weet niet precies hoe dit zou moeten, of dit de beste manier is, of dat dit uberhaupt wel gaat werken. Alle input is welkom