2017-01-05 6 views
0

Ich tauche in die Welt von Git und meine erste Aufgabe ist es, unseren Build-Prozess zu automatisieren. Ich benutze Bash, da mir das bekannt ist und es zu tun scheint, was ich brauche.Clone Git Repo mit Bash-Skript

Bevor ich meinen Code zu bauen, ich brauche die neueste Version des Repo auf meinen PC zu klonen.

Ich habe einen Haken 22. Ich möchte einen Repo von einem Bash-Skript klonen, das Teil des Repos wäre, das ich zu klonen versuche.

Ich möchte mein Build/Bash-Skript unter Quellcodeverwaltung zusammen mit allem anderen ... Aber ich möchte auch eine Operation mit einem Befehl.

Wie gehen andere mit diesem Problem um? Ich kenne ClearCase am besten, daher ist Git etwas gewöhnungsbedürftig.

+3

Speichern Sie Ihre Bereitstellungsskripts nicht in demselben Repo wie den bereitgestellten Code, was keinen Sinn ergibt. – meagar

+0

Es ist ein Haken 22, weil das Klonen eines Repositorys per Definition * extern * zu einem Repository ist. Das Skript, das das Repository klont, muss zumindest unabhängig vom Rest des Build-Systems bereitgestellt werden. Im Idealfall befindet sich das gesamte Build-System außerhalb des Repositorys. es benötigt als * input * ein Repository, das zu erstellende Software enthält. – chepner

+0

Also was ich benutze, ist ein kontinuierlicher Integrationsdienst (travis-ci in meinem Fall), der Pushs auf meinem Master-Zweig auf GitHub hört. Der Push löst einen Build aus, der den Repo in die Travis-Umgebung klont - von dort aus habe ich Zugriff auf meine Deploy-Skripts. Wenn der Build erfolgreich ist, werden die Deploy-Skripts ausgelöst. – Lix

Antwort

0

Git clone ist vergleichbar mit ClearCase mkview in dem es erstellt einen neuen Arbeitsordner, der als die wichtigste Möglichkeit zur Interaktion mit Dateien im Repository dient. Wenn Sie dieses Skript für ClearCase schreiben, würden Sie wirklich damit beginnen, eine neue ClearCase-Ansicht zu erstellen? Wenn Sie das täten, hätten Sie die gleiche Situation.

Der allgemeine Ansatz besteht darin, anzunehmen, dass die Operation clone als Teil der einmaligen Einrichtung dieses Build-Systems durchgeführt wurde und das Skript bereits Zugriff auf den Arbeitsordner hat. Die Git-Befehle Sie mehr daran interessiert wären, in sind clean, checkout, fetch, pull und reset --hard. Es gibt Überschneidungen zwischen Git-Befehlen, so dass Sie nicht alle benötigen. Offensichtlich hängt die Auswahl der Git-Befehle und der Optionen, mit denen Sie sie aufrufen, davon ab, was Sie von Ihrem Skript erwarten.

Auf diese Weise ist es kein Problem, das Skript im Repository zu behalten, außer Sie werden es in den gleichen Zweigstellen wie den Code, den Sie erstellen, versionieren. Dies ist nicht unbedingt schlecht, unterscheidet sich aber von dem, was normalerweise in ClearCase passieren würde.

+0

Im Grunde könnte ich eine 'git checkout-Verzweigungsname' oder' git-Checkout-Master', um meine lokalen Repo mit den neuesten Änderungen zu synchronisieren auf jedem Zweig? @gatkin – user7379734

+0

Im Wesentlichen. Ich werde dein Skript nicht schreiben, aber 'git fetch; Git Kasse Master; git reset --hard origin/master' sollte dir den Einstieg erleichtern. – gatkin