2016-12-15 9 views
1

Ich weiß nicht wirklich, wie man nach dieser Frage sucht, also bitte leiten Sie mich weiter, wenn es schon gefragt wurde.Mercurial Repo Organisation

Ich bin neu in mercurial und wir haben ein Problem mit unserer aktuellen Repo-Organisation:

Unsere aktuelle Repo-Organisation ist, dass wir jeder unsere eigenen Arbeits Repositories (für jedes Projekt), die wir ziehen und schieben, um einen Master Repo (auch für jedes Projekt).

Das Problem ist, dass unsere Arbeits Repos auf dem Firmenserver (zusammen mit dem Master Repo) befinden und Gebäude aus unserer Arbeit Repo auf dem Server verursacht unsere Bauzeiten zu sehr hoch (dh 40-50 Sekunden beim Bau auf unserer lokalen Festplatte dauert etwa 1 Sekunde).

Die offensichtliche Lösung scheint zu sein, unsere Arbeitsrepos auf unsere lokale Festplatte zu verschieben und zum/vom Master-Repo auf dem Server zu schieben/ziehen.

Ein Problem damit ist, dass der Arbeits-Repo jetzt physisch auf unserer lokalen Festplatte ist und nicht auf dem Firmenserver gesichert wird.

Gibt es eine Möglichkeit, ein "Shadow" -Arbeits-Repo (auf der Serverseite) zu erstellen, das dauerhaft mit jedem unserer individuellen Arbeitsreposons (auf unserer lokalen Festplatte) synchronisiert bleibt und dann drückt/zieht einer davon zum und vom Master-Repo?

Auf diese Weise profitieren wir von den verkürzten Bauzeiten zusätzlich zu allen Daten aus unseren Arbeits Repos auf dem Server gesichert.

Vielen Dank für jede Eingabe/Beratung, Shaun

+0

Ich bin mir nicht sicher, ob es klar ist, ich meine ein "Schatten" arbeiten Repo auf dem Server für jeden Benutzer Repo auf ihrem lokalen Laufwerk. – Shaun

+0

mercurial ist nicht zentralisiert, es gibt keinen Unterschied zwischen dem "funktionierenden" Repo und dem "Master" -Datensatz. –

+0

Ich bin mir nicht sicher, ob ich verstehe, ich bin neu im mercurial und habe die Repos nicht eingerichtet. – Shaun

Antwort

0

Sie halten eine Kopie des Repository auf dem Firmenserver und eine Kopie auf dem lokalen Laufwerk (so dass es gesichert wird) (so dass Sie kompilieren es leicht). Sie halten die Kopien synchron mit Push/Pull.

+0

Vielen Dank, das war mein erster Gedanke, obwohl ich dachte, wenn es da wäre war eine Funktion, um unsere Arbeitsreplikation auf dem Server zu halten, ohne dass wir uns darauf verlassen müssten, die Daten zwischen unseren lokalen Laufwerken und unserem Server ständig manuell zu synchronisieren. – Shaun

1

Im Allgemeinen können Sie nur committete Changesets zwischen den Repositories austauschen. Zusätzlich müssen sie mindestens Phasenentwurf sein. Es gibt keine Möglichkeit innerhalb von mercurial den Status des Arbeitsverzeichnisses zu teilen.

Wahrscheinlich wollen Sie sich daran gewöhnen, oft und atomar zu committen. Sie können es leicht automatisieren, jedes Commit, das Sie lokal vornehmen, per Commit Hook lokal auf den zentralen Server zu übertragen.

Zusätzlich sollten Sie wahrscheinlich Ihren zentralen Server auf non-publishing server setzen. Das bedeutet, dass Sie Commits in der Entwurfsphase schieben können und sie bleiben in dieser Phase, also veränderbar. Auf diese Weise können Sie auch Entwurfsarbeiten dorthin schieben, die später bearbeitet werden können. Sie müssen die Phase manuell auf "public" für diejenigen Changesets ändern, die Sie für "erledigt" halten. Die changeset evolution extension von mercurial könnte nützlich sein

+0

Vielen Dank für Ihren Rat, Sie haben mir etwas zum Nachdenken gegeben. – Shaun