2016-07-24 8 views
-1

ich eine verschachtelte git-Repository-Struktur haben, wie unten:erstellen git versioniert Projekt mit cookie

outer_repository/ 
|-- outer_dummy_file 
|-- .git 
`-- inner_repository 
    |-- .git 
    `-- inner_dummy_file 

Ist es möglich, inner_repository/.git mit dem äußeren Repository versioniert zu machen?

Motivation:

Ich bin eine Struktur für neue Projekte mit cookiecutter machen. Jedes neu gestartete Projekt hat zunächst einen vordefinierten Satz von Dateien und Werkzeugen. Eine der Voraussetzungen für das automatisierte Versionierungssystem ist, dass das neue Projekt mit git versioniert wird und initial commit ist. Die inner_repository ist eine Struktur für die neuen Projekte.

+1

haben Sie sah [ 'git submodule'] (https: // git-scm .com/docs/git-submodule) oder ['git subtree'] (https://medium.com/@v/git-subtrees-a-tutorial-6ff568381844#.9sx8mzxcl)? – Sukima

Antwort

1

Es ist möglich, dies zu erreichen, ohne die Git Akrobatik zu tun. Cookiecutter bietet eine Option zum Ausführen post generation hooks. Dies ermöglicht die Erstellung des Git-Repository bei der Projekterstellung.

Ich habe folgendes in meinem Repository cookie hinzugefügt:

hooks/ 
`-- post_gen_project.py 

wo post_gen_project.py ist:

import subprocess 

subprocess.call(['git', 'init']) 
subprocess.call(['git', 'add', '*']) 
subprocess.call(['git', 'commit', '-m', 'Initial commit']) 
0

Erstellen Sie einfach ein versioniertes Vorlagenprojekt (mit Initialdateien usw.), und lassen Sie neue Projekte ein Fork des Vorlagenprojekts werden? Versioning der .git Inhalt klingt wie eine schlechte Idee.

+0

Im Allgemeinen ist es. Dies ist eine spezielle Frage zum Erzeugen eines Cookiecutter-Projekts, das bereits ein Git-Repo ist. Was meinen Vorschlag betrifft, wenn ich ein Projekt klonen würde, wäre die gesamte Verzeichnisbenennung die gleiche, während ich mit dem Cookiecutter den Projektnamen und andere projektspezifische Attribute definieren kann, die bei der Projekterstellung automatisch zugewiesen werden. "Zugewiesen" bedeutet, dass Vorlagenvariablen in Dateien und Dateinamen durch die entsprechenden Zeichenfolgen für dieses Projekt ersetzt werden. – TheMeaningfulEngineer