Die Zusammenarbeit, basierend auf einem Github Repository

Die Quelldateien des (Telekom) Open Source License Compendiums werden in einem GitHub repository gehostet. Für eine Kooperation gibt es die fallweise Mitarbeit, die regelmäßige Mitarbeit über das Forken des Repositories und die permanente Mitarbeit als Collaborator im Sinne von GitHub. Das Repository wird über folgende Branch-Strategie verwaltet:

  • Der Branch master enthält immer die zuletzt publizierte Version.
  • Initial wird der Branch integration vom letzten Stand des Branches master abgeleitet. Die anderen Arbeitszweige werden ihrerseits vom Zweig integration abgeleitet. In diesen werden sie schließlich wieder zurück gemerget, sei es zum zwischenzeitlichen Austausch von Arbeitsständen, sei es, um eine publizierbare Releaseversion zu erzeugen. Bei solch einer publizierbaren Version wird der Zweig integration zurück in den Zweig master germerged und das Ergebnis nach Auflösen aller Konflikte veröffentlicht.
  • Jeder 'Collaborator' erhält seinen eigenen Arbeitszweig
    • branch kreincke :- Arbeitszweig von Karsten Reincke
    • branch jdobson :- Arbeitszweig von John Dobson
    • branch gsharpe :- Arbeitszweig von Greg Sharpe
    • ...
  • Der Zweig endnote ist ein 'Schattenbranch' vom Zweig master, in den bei jedem Release der Stand von Master gemerged wird, bevor die Konfiguration wieder auf den Typ Endnote umgestellt wird.
  • Der Zweig  gh-pages enthält die  OSLiC Projekt Htmlseiten, die gemäß der GitHub page Regularien angelegt worden sind und also auch auf GitHub gehostet werden.

Github Commands of an Edit/Merge/Rebase Cycle

  1. Initial Checkout
    1. git clone https://github.com/telekom/oslic.git or [git clone git@github.com:telekom/oslic.git]
    2. git checkout YourWorkBranch /* switches to your branch */
    3. git pull  /* updates with whatever is on server */
  2. Development on a Working Branch
    1. /* do, whatever you want to do */
    2. git commit -m"Change message"
    3. git push
  3. Overarching Integration of Working Results
    1. git checkout integration
    2. git pull
    3. git merge YourWorkBranch
    4. git mv 000-branch-YourWorkBranch 000-branch-integration
    5. git add .
    6. git commit -m"Merged branch YourWorkBranc to integration"
    7. git push
  4. /* Merging integration into master as (3) */
  5. /* Rebase integration as client of master like (6) */
  6. Rebasing YourWorkBranch
    1. git checkout YourWorkBranch
    2. git pull
    3. git rebase integration
    4. git mv 000-branch-integration 000-branch-YourWorkBranch
    5. git add .
    6. git commit -m"Updated YourWorkBranch to latest changes from integration"
    7. git push
  7. GOTO (2)