We hebben momenteel een SVN repository waar onze complete programmatuur in zit. Dit is een .Net solution en bestaat uit grofweg 3 delen: core, web en client. Daarnaast nog een paar hulp-projecten en binary dependencies van voor het Nuget tijdperk. Oorspronkelijk 1 ontwikkelaar, nu een team van inmiddels 3 en binnenkort een 4e. De eerste ontwikkelaar neemt dan meer de rol aan van supervisie en reviewen.
We lopen nu tegen een aantal problemen aan:
1. Nieuwe ontwikkelaars zijn vaak extern en van hogerhand mogen we niet alle code in 1x beschikbaar stellen, alleen het deel waar de ontwikkelaar voor is ingehuurd. Wordt nu geregeld met permissies op de SVN server per directory, usergroup en branch. Dit instellen is foutgevoelig, en het is hierdoor lastig nieuwe branches te maken.
2. Mergen is vaak een probleem (bijvoorbeeld conflicts in .csproj bestanden). Branch per feature lukt nu sowieso niet vanwege de permissies van 1. Idealiter zou ik graag per feature een open issue hebben in de issue tracker, daaraan gekoppeld een branch. Wanneer klaar eventueel een code-review en daarna merge met trunk/master.
We zijn nu aan het kijken of het de boel kunnen omzetten naar een aantal kleinere git repositories. Maar omdat wij nauwelijks ervaring hebben met git of andere DVCS, vraag ik om jullie input
Gaat verhuizen naar Git ons helpen met bovenstaande knelpunten? Ik denk zelf van wel, maar het leren werken met Git zal ook tijd nodig hebben. Zijn er dingen waar we nog op moeten letten?
Ik heb GitHub uitgeprobeerd, de issue tracker gecombineerd gecombineerd met branches lijkt me handig voor bijv code-reviews. Je kan ook per private repo instellen wie daarin kan werken. Voor preciezere rechtenbeheer is GitLab ook een optie maar ik zie nog niet waarom dat nodig zou zijn.
Ik zoek nog een goede simpele workflow. Feature Branch (https://www.atlassian.com...s/feature-branch-workflow) spreekt mij wel aan. Git Flow lijkt mij overkill. --edit: GitHUB flow is denk ik wat ik zoek-- De workflow die we straks als team gebruiken, moet niet veel moeilijker zijn dan SVN branch/merge en het liefst geen Git shell commando's nodig. Voor SVN gebruiken we nu TortoiseSVN, ik denk dat als we eenmaal met Git bezig zijn we met Atlassian SourceTree en misschien TortoiseGit wel uitkomen.
Verder ben ik wel alvast begonnen met het omzetten om te kijken of dit überhaupt lukt.
1. svn repo clonen naar git repo met svn2git, incl branches, excl tags, de commit history blijft hiermee behouden.
2. git repo opschonen met git filter-branch, o.a. oude binaries eruit.
Tot stap 2 heb ik het werkend.
3. git repo splitsen naar aantal kleinere repo's, weer met git filter-branch.
4. lokale oude branches weg (al lang verwijderd uit SVN) en remotes naar SVN weg.
5. pushen naar bijv. GitHub.
We lopen nu tegen een aantal problemen aan:
1. Nieuwe ontwikkelaars zijn vaak extern en van hogerhand mogen we niet alle code in 1x beschikbaar stellen, alleen het deel waar de ontwikkelaar voor is ingehuurd. Wordt nu geregeld met permissies op de SVN server per directory, usergroup en branch. Dit instellen is foutgevoelig, en het is hierdoor lastig nieuwe branches te maken.
2. Mergen is vaak een probleem (bijvoorbeeld conflicts in .csproj bestanden). Branch per feature lukt nu sowieso niet vanwege de permissies van 1. Idealiter zou ik graag per feature een open issue hebben in de issue tracker, daaraan gekoppeld een branch. Wanneer klaar eventueel een code-review en daarna merge met trunk/master.
We zijn nu aan het kijken of het de boel kunnen omzetten naar een aantal kleinere git repositories. Maar omdat wij nauwelijks ervaring hebben met git of andere DVCS, vraag ik om jullie input
Ik heb GitHub uitgeprobeerd, de issue tracker gecombineerd gecombineerd met branches lijkt me handig voor bijv code-reviews. Je kan ook per private repo instellen wie daarin kan werken. Voor preciezere rechtenbeheer is GitLab ook een optie maar ik zie nog niet waarom dat nodig zou zijn.
Ik zoek nog een goede simpele workflow. Feature Branch (https://www.atlassian.com...s/feature-branch-workflow) spreekt mij wel aan. Git Flow lijkt mij overkill. --edit: GitHUB flow is denk ik wat ik zoek-- De workflow die we straks als team gebruiken, moet niet veel moeilijker zijn dan SVN branch/merge en het liefst geen Git shell commando's nodig. Voor SVN gebruiken we nu TortoiseSVN, ik denk dat als we eenmaal met Git bezig zijn we met Atlassian SourceTree en misschien TortoiseGit wel uitkomen.
Verder ben ik wel alvast begonnen met het omzetten om te kijken of dit überhaupt lukt.
1. svn repo clonen naar git repo met svn2git, incl branches, excl tags, de commit history blijft hiermee behouden.
2. git repo opschonen met git filter-branch, o.a. oude binaries eruit.
Tot stap 2 heb ik het werkend.
3. git repo splitsen naar aantal kleinere repo's, weer met git filter-branch.
4. lokale oude branches weg (al lang verwijderd uit SVN) en remotes naar SVN weg.
5. pushen naar bijv. GitHub.