2016-05-30 15 views
1

Vielleicht vor gefragt, aber ich kann nicht die klare Antwort finden. Wenn ich die Zweige eines Repos mit gitlib2sharp listen muss, muss ich wirklich zu einem lokalen Repo klonen? Was ist das für ein Sinn? Ich möchte nur einen bestimmten Zweig klonen, wie Sie mit Git-Klon tun https://bla/repo.git -b branch1Libgit2sharp Get Remote-Niederlassungen

Jetzt muss ich zuerst eine lokale Kasse tun, dann die Zweige und von dort eine zweite Runde.

Fehle ich hier etwas (hoffe ich).

TIA für Ihre Antwort!

Grtz, Ronald

Update (zu lang für einen Kommentar): OK, also hier der Anwendungsfall. Ein Unternehmen liefert SSRs-Berichte, die wir über TAP bereitstellen müssen. Also sollten meine Gedanken dies über Git tun. Für jede Änderung lassen Sie sie eine Branche erstellen, hochladen/ändern/etc in dieser Branche. Wiederholen Sie die Änderungen in diesem Zweig, bis alles in Ordnung ist. In den Iterationen sollten sie in der Lage sein, sich auf mindestens T (wieder) zu entfalten. In der letzten Phase verschmelzen wir den Brannch mit dem Master und setzen (re) den Master in P. In Github können Sie diesen Flow komplett 'anklicken', aber von Natürlich möchte ich das automatisieren und habe vorzugsweise einige Tasten gedrückt, damit sie mich dafür nicht brauchen. Also, was ist die beste programmatische Wahl hier? Wenn Sie einen Zweig erstellen und mit der Bereitstellung in T beginnen, sollte ich den Repo erstellen (klonen), meinen lokalen Repo auf den bestimmten Zweig verweisen, die Dateien (.sql- und .rdl-Dateien) abrufen und diese ausführen/hochladen? Mir war nicht bewusst, dass du beim Klonen eines Repos alle Zweige damit klonst. Danke schon so weit!

+0

FYI: 'git Klon https: //bla/repo.git -b branch1' holt alle Zweige trotzdem, wenn Sie wirklich nur einen Zweig ohne die' comm-ish' holen wollten, die nicht in diesen Zweigen sind 'Baum-Ish', müssten Sie initiali ze ein leeres Repo, fügen Sie einen Remote-Tracking-Zweig mit einem Ursprung des ursprünglichen Repo und dann einen Checkout für diesen Zweig ... – SushiHangover

+0

@SushiHangover Kannst du nicht einfach tun: 'git Klon https: //bla/repo.git -b branch1 --einzelner Zweig. Ich hatte nicht wirklich Grund, das zu verwenden, aber in Dokumentationen wie "--single-branch" sollte es nur Commits abrufen, die sich auf den gewünschten Zweig beziehen. – Alderath

+0

@Alderath Sie sind richtig, mit '--single - branch' funktioniert (je nach git - Version, zusammen mit seichtem Klonen (' --depth 1') und noch vor kurzem klonen ein einzelnes Commit, wenn auf dem Server aktiviert (' upload-pack' set auf 'true') ... hängt nur von den Git-Versionen (Client und Server) ab ;-) – SushiHangover

Antwort

0

Wenn Sie so etwas wie git clone https://bla/repo.git -b branch1 mit libgtk2sharp zu tun versuchen diese:

var exampleRepositoryUrl = "https://github.com/npgsql/npgsql.git"; 
var exampleDestinationFolder = "branch-hotfix-3.0.8"; 
var exampleBranchName = "hotfix/3.0.8"; 

var repositoryClonedPath = Repository.Clone(exampleRepositoryUrl, 
              exampleDestinationFolder, 
              new CloneOptions() 
{ 
    BranchName = exampleBranchName 
}); 

using (var clonedRepo = new Repository(repositoryClonedPath)) 
{ 
    // ... 
} 

Um Namen von Remote-Niederlassungen Liste ohne Repo-Klonen können Sie so etwas wie folgt verwenden:

var branches = Repository.ListRemoteReferences(exampleRepositoryUrl) 
         .Where(elem => elem.IsLocalBranch) 
         .Select(elem => elem.CanonicalName 
              .Replace("refs/heads/", "")); 
+0

Danke! Ich bin auch hier, aber ich muss den FriendlyName der Zweige bekommen. Sie können auf die Zweigstellensammlung über das Repopobjekt zugreifen, aber Sie benötigen dann zuerst das Repopobjekt, bei dem es sich um ein ausgechecktes lokales Festplattenrepo handelt. Und das wollte ich vermeiden, um die Filialnamen abzurufen. Aber vielleicht benutze ich Git auf die falsche Art? – Ronald

+0

Ich habe meine Antwort mit einem Beispiel für die Liste der Namen von entfernten Niederlassungen aktualisiert, ohne ein Repo zu klonen. Vielleicht wird es hilfreich sein. – PiKos

+0

Danke! das war, was ich gesucht habe! – Ronald