# Repon

## Namngivning

Den nya namngivningen delas in i två delar. Delarna separeras med ett understreck, för att göra det enklare att skapa skript som automatiskt skapar upp/döper om repon utifrån befintliga branches/repon. Strukturen blir följande: `<paket/typ>_<sajt>`

`paket`: Färdiga paket, ex `kex`, `kex2`, `skalbar`, `skalbar2`, etc. Interna repon namnges med `util`.

`sajt`: Här kommer främst “sajtens namn” att vara, exempelvis: `kiruna`, `kungliga-operan`, `sodertorns-hogskola` etc.

Använd aldrig å, ä, eller ö i repots namn. Ersätt med a, och o.

Både `paket` och `sajt` skrivs kebab-case.

Undvik förkortningar om de inte är allmänt vedertagna, exempel: SVT.

Lägg till `-ex` eller `-in` på slutet av sajtens namn för att förtydliga om det är en externwebb eller ett intranät.

Notera att ett GitHub repo får max vara 100 tecken långt.

## Exempel på namngivning

Exempel på `<paket>`:

```plaintext
kex             = Kex-paketet
kex2            = Kex-paketet, version 2
skalbar-sv      = Paketet Skalbar 1 Sitevision
skalbar-google  = Paketet Skalbar 1 Google
skalbar-365     = Paketet Skalbar 1 Microsoft365
skalbar2-sv     = Paketet Skalbar 2 Sitevision
skalbar2-m365   = Paketet Skalbar 2 Microsoft365
intrapaket      = Paketen intrapaket och intrapaket2
sp              = Sharepoint
sv              = Sitevision
util            = Soleils interna repon
```

Exempel på `<paket>` i kombination med `<sajt>`:

```plaintext
sv_sodertorns-hogskola-ex
sv_kemikalieinspektionen-in
skalbar-sv_sodertorns-hogskola-in
skalbar-sv_kungliga-biblioteket-in
kex_kemikalieinspektionen-ex
kex2_kommunalforbundet-halsingland-ex
```

### Förkortningar

Kunden Norske tannlegeforeningen (NTF), som utgår från paketet KEX (notera att förkortningen inte är allmänt vedertagen, och därför skrivs ut):

```plaintext
kex_norske-tannlegeforeningen-ex
```

Kunden Nordiska Afrikainstitutet (NAI), som inte utgår från något specifikt paket, och använder Sitevision:

```plaintext
sv_nordiska-afrikainstitutet-ex
```

### Externwebb eller intranät

Vi har exempelvis utvecklat både intranät och externwebb åt kunden Kiruna. I detta fallet skapar vi två separata repon:

```plaintext
kex_kiruna-ex
skalbar-sv_kiruna-in
```

### Interna repon

Byggskriptet, tidigare `sv_gulp_build`:

```plaintext
util_gulp-build
```

Samlingsrepo för allmänna återanvändsningsbara webappar, tidigare `sv-apps`:

```plaintext
util_apps
```

## Skapa nya repo

För att skapa ett nytt projekt, gå in på <https://github.com/soleilit/> och tryck på knappen New.

Säkerställ att du skapar ett privat repo med owner “soleilit”.

Följ namngivningen av repo ovan.

Om du skapar ett repo baserat på existerande kod (t ex ett paket) se till att inga filer skapas (kryssrutorna tomma)

![Skärmdump från GitHub, bilden visar hur ett nytt repo skapas](/_astro/naming_01.IiH36QFj_1gPVBr.webp)

## Anonymisering av kod

För att tydligt se vilken kod som tillhör paketen och minska personberoendet har vi bestämt att vi anonymiserar alla commits som tillhör paketen när vi skapar projekt baserade på dem. Det går vid behov fortfarande att se vem som skrivit koden genom att titta i paketets eget repo.

## Exempel på skapa nya repo

Här följer några “recept” på hur du kan skapa nya repon från existerande kod och anonymisera den.

Exemplen är gjorda för git bash.

I slutet av exemplen följer en listning med alla kommandon som utnyttjar variabler. Genom att byta ut värdena på variabeldeklarationerna i början kan de anpassas till dina behov.

Fråga gärna någon med större git-vana om du behöver hjälp att skapa nytt repo!

### Skapa ett helt nytt repo från ett paket

Exempel: skapa ett nytt repo baserat på skalbar2-sv för ett intranät åt Grönköping (skalbar2-sv\_gronkoping-in).

1. Skapa ett nytt repo på github enligt ovan: `skalbar2-sv_gronkoping-in` Spara adressen (<https://github.com/soleilit/skalbar2-sv_gronkoping-in.git>)

2. Checka ut skalbar2-sv i en ny katalog och gå till katalogen

Beskrivning: Kommandet nedan skapar upp ett nytt repo där du står med namnet `skalbar2-sv_gronkoping-in` ifrån githubrepot `https://github.com/soleilit/skalbar-2.git` Notera även att om du gör en kopia på Kex-2 är det inte `sitevision/master` utan bara `master`

```plaintext
git clone -b sitevision/master https://github.com/soleilit/skalbar-2.git skalbar2-sv_gronkoping-in
cd skalbar2-sv_gronkoping-in
```

3. Anonymisera alla existerande commits

```plaintext
git filter-branch --env-filter '
  GIT_AUTHOR_EMAIL="soleil"
  GIT_AUTHOR_NAME="Soleil"
  GIT_COMMITTER_EMAIL="soleil"
  GIT_COMMITTER_NAME="Soleil"
' -- HEAD
```

kontrollera att det ser rätt ut:

```plaintext
git log --date=short --format="%ad %C(cyan)%an%C(reset) %s"
```

4. Sätt upp remote till det nya reposom skapats

```plaintext
git remote set-url origin https://github.com/soleilit/skalbar2-sv_gronkoping-in.git
```

5. Byt branch till master och pusha upp

```plaintext
git branch -M master
git push -u origin master
```

#### Sammanfattning med utbytbara variabler

```plaintext
export newrepo_name="skalbar2-sv_gronkoping-in"
export newrepo_src="https://github.com/soleilit/skalbar-2.git"
export newrepo_branch="sitevision/master"


git clone -b $newrepo_branch $newrepo_src $newrepo_name
cd $newrepo_name


git filter-branch --env-filter '
  GIT_AUTHOR_EMAIL="soleil"
  GIT_AUTHOR_NAME="Soleil"
  GIT_COMMITTER_EMAIL="soleil"
  GIT_COMMITTER_NAME="Soleil"
' -- HEAD


git remote set-url origin "https://github.com/soleilit/${newrepo_name}.git"
git branch -M master
git push -u origin master
```

### Bryt ut en existerande paketbranch till ett nytt repo

Vi flyttar ut Folke Bernadotteakademins intranät som ligger som branch `fba/master` på <https://github.com/soleilit/skalbar.git>

1. Skapa ett nytt repo på github enligt ovan: skalbar-sv\_folke-bernadotteakademin-in Spara adressen (<https://github.com/soleilit/skalbar-sv_folke-bernadotteakademin-in.git>)

2. Checka ut den existerande branchen i en ny katalog och gå till katalogen

```plaintext
git clone -b fba/master https://github.com/soleilit/skalbar.git skalbar-sv_folke-bernadotteakademin-in
cd skalbar-sv_folke-bernadotteakademin-in
```

3. Anonymisera alla commits från innan branchen skapades

`sitevision/master` är den branch som `fba/master` skapades från. Med hjälp av `git merge-base` hittar vi den punkt när `fba/master` branchades så att vi kan anonymisera alla commits innan det.

```plaintext
branchpoint=`git merge-base origin/sitevision/master HEAD`; git filter-branch --env-filter '
if git rev-list '"$branchpoint"' | grep $GIT_COMMIT; then
  GIT_AUTHOR_EMAIL="soleil"
  GIT_AUTHOR_NAME="Soleil"
  GIT_COMMITTER_EMAIL="soleil"
  GIT_COMMITTER_NAME="Soleil"
fi' -- HEAD
```

kontrollera att det ser rätt ut:

```plaintext
git log --date=short --format="%ad %C(cyan)%an%C(reset) %s"
```

4. Sätt upp remote till det nya reposom skapats

```plaintext
git remote set-url origin https://github.com/soleilit/skalbar-sv_folke-bernadotteakademin-in.git
```

5. Byt branch till master och pusha upp

```plaintext
git branch -M master
git push -u origin master
```

#### Sammanfattning av kommandon med variabler:

```plaintext
export newrepo_name="skalbar-sv_folke-bernadotteakademin-in"
export newrepo_src="https://github.com/soleilit/skalbar.git"
export newrepo_branch="fba/master"
export newrepo_src_branch="sitevision/master"


git clone -b $newrepo_branch $newrepo_src $newrepo_name
cd $newrepo_name


branchpoint=`git merge-base origin/${newrepo_src_branch} HEAD`; git filter-branch --env-filter '
if git rev-list '"$branchpoint"' | grep $GIT_COMMIT; then
  GIT_AUTHOR_EMAIL="soleil"
  GIT_AUTHOR_NAME="Soleil"
  GIT_COMMITTER_EMAIL="soleil"
  GIT_COMMITTER_NAME="Soleil"
fi' -- HEAD


git remote set-url origin "https://github.com/soleilit/${newrepo_name}.git"
git branch -M master
git push -u origin master
```

### Skapa ett helt nytt repo från en underkatalog från ett existerande repo

I git repo

[sitevision](https://github.com/soleilit/sitevision) ligger flera olika projekt som underkataloger. I detta exempel så bryter vi ut umea.se

1. Skapa ett nytt repo på github enligt ovan: sv\_umea-ex Spara adressen (<https://github.com/soleilit/sv_umea-ex.git>)

2. Checka ut sitevision-repo

   i en ny katalog och gå till katalogen

```plaintext
git clone https://github.com/soleilit/sitevision.git sv_umea-ex
cd sv_umea-ex
```

3. Filtrera så bara underkatalogen ligger kvar

```plaintext
git filter-branch --subdirectory-filter Umeå/Umea.se/
```

4. Sätt upp remote till det nya reposom skapats

```plaintext
git remote set-url origin https://github.com/soleilit/sv_umea-ex.git
```

5. Pusha upp till nya repo

```plaintext
git push -u origin master
```

#### Sammanfattning av kommandon med variabler:

```plaintext
export newrepo_name="sv_umea-ex"
export newrepo_src="https://github.com/soleilit/sitevision.git"
export newrepo_dir="Umeå/Umea.se/"


git clone $newrepo_src $newrepo_name
cd $newrepo_name
git filter-branch --subdirectory-filter $newrepo_dir
git remote set-url origin "https://github.com/soleilit/${newrepo_name}.git"
git push -u origin master
```