2010-12-23 6 views
15

In unserem git-svn-verwalteten Projekt haben wir 3 Upstream-Projekte, die alle in nativen Git-Repositories auf GitHub gespeichert sind. Da der Quellcode dieser Upstream-Projekte unter unserer Kontrolle steht und sich häufig ändert, ist unsere derzeitige Lösung, nämlich die Build-Artefakte jedes Mal, wenn wir etwas ändern, erneut in das Superprojekt zu implementieren, ziemlich beschwerlich.Verwendung von Git-Submodulen in einem git-svn-Projekt

Was ich möchte, ist, dies haben:

parent project (git-svn): 
    --> submodule 1 (git) 
    --> submodule 2 (git) 
    --> submodule 3 (git) 

Auf diese Weise die Quellcode für Submodule 1-3 zusammen mit den Quellen für das Super-Projekt kompiliert wird, aber ich kann Änderungen an Submodule schieben separat.

Die Frage ist: Was passiert, wenn ich git svn dcommit auf dem übergeordneten Projekt? Funktioniert das überhaupt?

UPDATE Hm, ich nur eine einfache Projektstruktur aufgebaut und versucht, dieses Szenario zu ähneln, und ich diese Fehlermeldung erhalten, wenn sie auf dem Superproject zu dcommit versuchen:

a0301b11f3544a1e71067ff270eded65e4c8afbd doesn't exist in the repository at /opt/local/libexec/git-core/git-svn line 4775 
Failed to read object a0301b11f3544a1e71067ff270eded65e4c8afbd at /opt/local/libexec/git-core/git-svn line 574 

Irgendwelche Ideen/Vorschläge ?

+0

In unserer Welt verwenden wir Hudson zum Erstellen und Bereitstellen von Submodulen in einem lokalen Repository wie Artifactory. Maven ist so konfiguriert, dass es sich die SNAPSHOT-Version schnappt, so dass sie jeden Tag eine neue Deployment-Version oder jedes Mal, wenn wir mit -U aufbauen, greifen. Hudson kann so konfiguriert werden, dass eine E-Mail für eine neue Bereitstellung gesendet wird. – OleTraveler

+0

Aktualisieren Sie das Kopfgeld auf der Suche nach aktueller Antwort/Workaround. Ich denke, eine Antwort auf diese Frage ist, was ich suche: [Ist Git Svn mit Git Teilbaum kompatibel?] (Http://StackOverflow.com/Questions/13447705/is-git-svn-kompatibel-mit-Git- Unterverzeichnis) –

+0

mögliches Duplikat von [git-svn - # Objekt # existiert nicht im Repository unter/opt/local/libexec/git-core/git-svn Zeile 4706] (http://stackoverflow.com/questions/ 2771033/git-svn-objekt-nicht-existierend-im-repository-at-opt-lokal-libexec-git-cor) –

Antwort

10

Sie können dies nicht tun, git Submodule können nicht über git-svn in ein SVN-Repository vorgeschoben werden, dies wird nicht unterstützt.

+2

Ja, wir haben inzwischen unseren gesamten Quellcode auf ein bezahltes GitHub-Konto verschoben. Problem gelöst. – Matthias

5

git-svn erlaubt dies nicht, aber wenn Sie Zugriff auf Ihren SVN-Repository-Server haben, können Sie SubGit darin installieren. Es wird ein verknüpftes Git-Repository für Sie erstellt, so dass jeder Push-Vorgang automatisch in die SVN-Revision übersetzt wird und umgekehrt. Danach können Sie dem resultierenden Git-Repository Submodule hinzufügen und mit dem SVN-Repository arbeiten, indem Sie die reine Git-Schnittstelle verwenden. Diese Git Submodule werden nicht in SVN übersetzt.

Die Übersetzung ist gleichzeitig sicher und ziemlich transparent (svn: ignores wird in Git ignoriert, EOLs in .gitattributes, Tags in Tags und so weiter).

Verwandte Themen