2013-03-08 5 views
7

ich getan habe:Wie man Zweig mit git-p4 kloniert?

git p4 clone //depot/path/to/project/trunk/@all project 

die master Zweig der project zu erstellen. Jetzt möchte ich //depot/path/to/project/release zum release Zweig von project klonen. Wie ist das gemacht?

UPDATE: Die Verwendung von --detect-branches funktioniert auch nicht. Es meldet, dass es zwei Zweige aktualisiert (wenn es wirklich drei Zweige gibt), aber git branch Berichte nur Master existiert.

Antwort

0

Ich glaube, "Zweige erkennen" hängt davon ab, dass Sie eine Verzweigungszuordnung mit demselben Namen wie den Zweigpfad in Ihrem Depot haben. Wenn dies nicht der Fall ist, müssen Sie wahrscheinlich suggested method verwenden, um den Konfigurationswert git-p4.branchList in einem leeren git-Repo zu definieren, bevor Sie den Befehl git-p4 clone ausführen.

+0

Ah, das macht Sinn. Ich habe mich gefragt, wie die Branchendetektion "Magie" funktioniert. Ich werde es versuchen. Vielen Dank. –

+0

Das funktioniert immer noch nicht für mich. Ich vermute, dass Merges in mindestens zwei unserer Zweige in beide Richtungen gegangen sind und es einen Haken in die Arbeiten von git-p4 steckt. –

+0

Es hat für mich in der Vergangenheit auf einem sehr großen Repo gearbeitet, mit jemandem der meisten verwirrenden Zweige/Verschmelzung, die ich je gesehen habe. Da das Git-P4 in Python geschrieben ist, ist es eigentlich nicht so schwer zu debuggen. – cmcginty

8

Hier sind meine Setup-Notizen aus, als ich git-p4 verwendet habe. Es könnte hilfreich sein:

  • Laden Sie die p4 linux client. Speichern Sie die Datei in ~/bin oder /usr/local/bin und chmod +x

  • Setup-GIT-p4 als root

    chmod 755 /usr/share/doc/git/contrib/fast-import/git-p4 
    ln -s /usr/share/doc/git/contrib/fast-import/git-p4 /usr/local/bin 
    
  • definieren Git globals für GIT-p4

    git config --global alias.p4 '!git-p4' 
    git config --global git-p4.detectRenames true 
    git config --global git-p4.detectCopies true 
    
  • Set definiert zur direkten 'p4' Verwendung

    export P4PORT=SERVER_NAME:PORT_NUMBER 
    
  • Set Anmeldeinformationen

    export P4USER=USER_NAME 
    export P4PASSWD=PASSWORD 
    
  • Select Perforce Filialen 'Kunden' P4 mit

    Führen Sie den Befehl 'p4 Client', und fügen Sie nur die Pfade/branches Sie interessiert sind in. Wenn Sie möchten, Benennen Sie den Clientarbeitsbereich, indem Sie am Ende des Befehls ein optionales CLIENT_NAME-Argument hinzufügen. Dadurch können Sie verschiedene Clientdefinitionen auf demselben Computer verwenden.

    $ p4 client [CLIENT_NAME] 
    
    View: 
    //depot/main... //CLIENT_NAME/main... 
    //depot/patch... //CLIENT_NAME/patch... 
    //depot/dev... //CLIENT_NAME/dev... 
    
  • Clone das Repository

    • Einfacher Import

      git p4 clone --use-client-spec --detect-branches //[email protected] GIT_DIR 
      
    • Erweiterte Import

      git init PROJ; cd PROJ/ 
      git config git-p4.branchList main:patch 
      git config --add git-p4.branchList main:dev 
      git p4 clone --use-client-spec //[email protected] . 
      
  • Änderungen senden Zurück zu Perforce

    Um Änderungen an Perforce übermitteln zu können, muss ein Client-Arbeitsbereich getrennt vom Git-Arbeitsbaum vorhanden sein.Es wird empfohlen, dass sich der Arbeitsbereich unter im selben Dateisystem wie das Perforce git-Arbeitsverzeichnis befindet.

    Zusätzlich wird ein Verweis auf den Arbeitsbereichspfad auf dem Perforce -Server gespeichert und während des Befehls p4 submit verwendet.

    Der erste Schritt besteht darin, den lokalen Clientarbeitsbereich zu erstellen. CLIENT_NAME ist ein optionales Argument. Wenn Sie es nicht definieren, verwendet p4 Ihren Hostnamen.

    Sie werden in einen Dateieditor verschoben, bevor Sie den Befehl p4 abschließen Mit dieser können Sie alle Clienteinstellungen ändern, bevor sie an den Server gesendet werden. Sie müssen den Wert Root in ein neues Verzeichnis außerhalb Ihres Git Tree (z. B. ../p4-working) ändern. Überprüfen Sie außerdem die Werte Owner und Client , bevor Sie den Vorgang beenden. Diese Werte stammen aus Ihrer Umgebung und kann nicht im Editor geändert werden.

    p4 clients | grep USERNAME 
    

    Wenn Sie den Standard-Client-Name nicht verwendet haben, muss es in Ihrem lokalen git Config definiert werden:

    git config git-p4.client CLIENT_NAME 
    

    Wenn Sie bereit sind, Ihre Code-Änderungen zu drücken, um die Befehle zur Verfügung:

    git p4 rebase 
    git p4 submit 
    

    Sie können Kunden aus dem Sever entfernen, wenn nicht mehr in Gebrauch:

    p4 client -d CLIENT_NAME 
    
+1

Sie fehlen --add in der zweiten 'git config --add git-p4.branchList main: dev' –