2017-10-30 1 views
-1

Ich bin ziemlich neu in Git und bin ein bisschen verwirrt, wie ich meinen Workflow so bequem wie möglich einrichten.Wie kann ich sicherstellen, dass ich die neueste Version des Codes von GitHub

Ich arbeite an meinem Laptop (läuft OSX) und unserem viel robusteren Server (läuft CentOS) durch ssh, wo ich versuche, zeitaufwendige Tests für meinen Python-Code auszuführen. Nachdem ich dies einige Monate lang gemacht hatte, wurde mir schnell klar, dass ich parallele, aber getrennte Entwicklungslinien hatte, da die Ordnerstruktur sehr unterschiedlich ist.

Ich habe mir also die Zeit genommen, ein Github Repo einzurichten und klonte es in meinen Laptop. Dann habe ich die Python-Dateien paarweise (Server-Version vs. Laptop-Version) manuell gemischt, die Unterschiede manuell zusammengeführt und die Dateien auf Github hochgeschoben. Zuletzt habe ich das Repo auf dem Server geklont. Jetzt habe ich die gleiche Version an allen drei Orten, was großartig ist.

In Zukunft möchte ich die Divergenz zwischen den verschiedenen Plattformen vermeiden. Idealerweise würde ich gerne automatisch synchronisieren das lokale Repo mit Github jedes Mal, wenn ich mich einloggen (sollte theoretisch in .bashrc tun?), Und loggen Sie sich aus, des Servers. Im Wesentlichen versuche ich die Chance zu vermeiden, dass ich manuell die Synchronisierung zwischen den verschiedenen Maschinen vergessen.

Wie kann ich das erreichen? Gibt es mögliche Fallstricke für diese Strategie?

+0

Das wird kontinuierliche Bereitstellung genannt. Hier ist [ein Artikel] (https://code.tutsplus.com/tutorials/setting-up-continuous-integration-continuous-deployment-with-jenkins--cms-21511), wie man das mit einem Tool namens Jenkins (eine beliebte Option unter Web-Entwicklern und GitHub-Benutzern ... aber es gibt viele, viele andere). – JDB

+0

Für diejenigen, die auf der Basis der Breite abgestimmt haben, welche spezifischen Details fehlten? Ich freue mich, mehr Details zu liefern, aber ich denke, die Frage ist spezifisch genug, um brauchbare Antworten zu rechtfertigen. Es könnte für viele hier einfach sein, aber zuletzt habe ich überprüft, ob die Leute Fragen gestellt haben, um etwas über Dinge zu lernen, die sie nicht gut verstehen. Auch die Tatsache, dass es viele mögliche Lösungen für ein Problem gibt, bedeutet nicht, dass die Frage nicht zu verantworten ist. – posdef

+0

[Aus den FAQ] (https://stackoverflow.com/help/dont-ask): "*** vermeide es subjektive Fragen zu stellen, wo ... ** jede Antwort gleichwertig ist *" Ich denke, es ist eine vollkommen gute Frage zu stellen Nur nicht auf SO. Es gibt ganze Bücher, die auf CI & CD geschrieben wurden. Hier gibt es keine richtige Antwort ... alles hängt von Ihrer Erfahrung, Ihrem Budget, Sicherheitsbedenken, Arbeitsabläufen, Vorlieben usw. ab. Es ist ein sehr weites Thema. Das ist sehr nah an einer Frage, "Welches Tool sollte ich verwenden?", Aber Sie haben es vermieden, direkt danach zu fragen, also habe ich dafür gestimmt, als "zu breit" zu schließen. (Aber nicht -1) – JDB

Antwort

0

Für git selbst gibt es keine solchen Haken oder Einstellungen, um den lokalen Repo automatisch mit dem Remote Repo zu synchronisieren.

Die Arbeit ist Zeitplan, um ein Skript zum lokalen Repo mit Remote-Repo zu synchronisieren.

Das Sync-Skript Beispiel (sync master Zweig), wie unten:

#!/bin/sh 

git fetch 
flag=0 
ahead=$(git log origin/master..master --oneline) 
if [[ -z "${ahead// }" ]]; then 
    echo "Local repo has no commits un-pushed" 
else 
    { 
    flag=1 
    echo "local master branch is ahead of origin/master $flag" 
    } 
fi 
behind=$(git log master..origin/master --oneline) 
if [[ -z "${behind// }" ]]; then 
    { 
    if [ $flag == 0 ]; then 
     echo "already sync" 
    else 
     git push 
    fi 
    } 
else 
    { 
    if [ $flag == 0 ]; then 
     git pull origin master 
    else 
    { 
     git pull origin master --rebase 
     git push 
    } 
    fi 
    } 
fi 
echo "Now the local repo is aync eith remote repo" 

Um Zeitplan die Skripte ausgeführt wird, können Sie sich beziehen:

schedule running a bash shell script in windows

Running .sh every 5 minutes

Sie können auch verwandtes Problem here.

Verwandte Themen