Source

hgtip-content / advanced / 2009-11-09-create-a-git-mirror.html

Full commit
{% extends "_tip.html" %}
{%hyde
    title: Einen Git Mirror erstellen
    author_name: Steve Losh
    author_link: http://stevelosh.com/
    created: 2009-11-09
%}


{% block excerpt %}
Sie haben Mercurial gewählt, aber viele andere Leute bevorzugen Git. Machen 
Sie es ihnen einfach zu ihrem Projekt beizutragen.
{% endblock %}


{% block tip %}

Von allen verteilten Versionsverwaltungssystemen wie Mercurial, ist 
[Git](http://git-scm.com) wohl das populärste. Wenn Sie Mercurial für ein 
Projekt verwenden können sie einfach einen Git Mirror erzeugen. So können 
die Leute die Git verwenden sich einfach an ihrem Projekt beteiligen.

### Installieren von hg-git

Zuerst müssen Sie die Erweiterung [hg-git](http://hg-git.github.com/) 
herunter laden:

    easy_install dulwich
    hg clone http://bitbucket.org/durin42/hg-git/

Nun [ergänzen Sie ihre `~/.hgrc` Datei]({{ links.tip_edit_hgrc }}) um diese 
Zeile:

    [extensions]
    hggit = /path/to/hg-git

### Einen GitHub Account erstellen

Sie benötigen einen Ort für ihren Git Mirror und [GitHub](http://github.com/)
ist dazu perfekt geeignet. Gehen Sie auf die Webseite und legen Sie über 
den Link [sign up](http://github.com/plans) einen Account an, sofern sie 
bisher keinen haben.

### Ein Repository bei GitHub erzeugen

Nun da Sie einen GitHub Account haben, müssen Sie über den Knop "New 
Repository" ein neues Repository anlegen.

Sobald dies erzeugt ist, sehen Sie eine Seite wie diese:

<div class="screenshot">
    <a href="http://www.flickr.com/photos/sjl7678/4091674740/" title="GitHub New Repo Sample by Steve Losh, on Flickr"><img src="http://farm3.static.flickr.com/2580/4091674740_f6d488f9a5.jpg" width="432" height="500" alt="GitHub New Repo Sample" /></a>
</div>

Sehen Sie die URL `git@github.com:username/project.git`? Merken Sie sich 
diese URL, sie wird fürs publizieren ihres Mirrors benötigt.

### Ihr Projekt publizieren

Nun da Sie `hg-git` installiert und ein Repository für ihr Projekt auf GitHub
erzeugt haben, müssen Sie mit Mercurial ihr Repository auf GitHub publizieren.
Als erstes müssen Sie die Git URL in ihrem Mercurial Repository angeben. Fügen
Sie dazu diese Zeile in ihrer `.hg/hgrc` Datei hinzu:

    [paths]
    git = git+ssh://git@github.com/username/project.git

**WICHTIGER HINWEIS:** Sie müssen die `:` nach `github.com` mit einem `/` 
ersetzen. Dies ist nötig damit Mercurial den Pfad des Repository korrekt 
behandeln kann.

Sie müssen zudem `username` und `project` mit den korrekten Werten ersetzen.

Nun müssen Sie mit push auf den `git` Pfad ihren Mirror erzeugen:

    hg push git

Dies wird einige Sekunden dauern, besonders wenn es um ein grösseres Repository
geht. Sobald dies abgeschlossen ist verfügen Sie über ein 100% funktionierenden
Git Mirror unter http://github.com/username/project/. Wer Git verwenden will 
kann ihr Projekt nun mit dem Befehl `git clone 
git://github.com/username/project.git` klonen. Man wird nicht bemerken das Sie 
Mercurial benutzen.

### Beiträge akzeptieren

Einen Mirror für Git Benutzer zum Klonen erstellen ist nett. Aber irgendwann 
(sofern ihr Projekt interessant ist) wird ihnen jemand eine pull Anfrage auf 
GitHub senden.

`hg-git` macht es einfach Beiträge von Git Benutzern zu integrieren. Als 
erstes fügen Sie den Pfad zum Fork des Git Benutzers bei ihren Pfaden ein:

    [paths]
    git = git+ssh://git@github.com/username/project.git
    contributor = git+ssh://git@github.com/contributor_username/project.git

**Denken Sie auch hier daran die `:` nach `github.com` mit `/` zu ersetzen.**

Um deren Änderung in ihr Mercurial Repository zu übernehmen:

    hg pull contributor

Sie können [graphlog](/tips/beginner/2009-10-03-stay-sane-with-graphlog/) 
verwenden um zu sehen, wie ihr Repository derzeit aussieht (und ob sie mergen 
müssen).

Mergen Sie sofern sie wollen oder es nötig ist. Publizieren Sie danach die 
Änderung auf ihr Haupt-Repository für Mercurial und den Git Mirror:

    hg push
    hg push git

Damit sind die Grundlagen erklärt. Je nachdem wie viele Branches Sie für den 
Arbeitsablauf verwenden kann es komplizierter werden. Mit diesem Tipp sind Sie 
aber in der Lage, Änderungen von Git Benutzern zu akzeptieren.

{% endblock %}