2016-06-01 13 views
5

Mal sehen, was esWie kann ich git Submodul in git Repo als normales Verzeichnis hinzufügen?

  • git Repo erstellen zwei sub & test
 
mkdir test sub 
cd test && git init && touch README && git add README && git commit -m "initialize the git repo" && cd .. 
cd sub && git init && touch README && git add README && git commit -m "initialize the sub git repo" && cd .. 
  • Bewegen Sie den sub Repo in test
ist

Ich möchte sie als ein git Repo behandeln und sie fern drücken, aber jetzt können die Dateien unter sub Verzeichnis nicht enthalten sein?

Wie erreiche ich das auf einfache Weise wie sub sub als normales Verzeichnis behandeln?

Anwendungsfall für diese

Ich versuche, meine jenkins Datenordner (JENKINS_HOME) in Docker Bilder für Demo mit Dockerfile hinzuzufügen. (ADD JEKINS_HOME /opt/jenkins)

JENKINS_HOME 
Dockerfile 

Mein jenkin hat scriptler plugin die die git-Repo für seinen Zweck enthält. Dann gibt es in meinem Docker Bild git Repo wie unten

 
$ find jenkins-docker 
./.git 
./.git/.. (skipped 
./Dockerfile 
./JENKINS_HOME 
./JENKINS_HOME/scriptler 
./JENKINS_HOME/scriptler/scripts 
./JENKINS_HOME/scriptler/scripts/.git 
./JENKINS_HOME/scriptler/scripts/.git/... (skipped) 
./JENKINS_HOME/scriptler/scripts/Sample.groovy 
./JENKINS_HOME/... (skipped) 
./README 

Antwort

1

Scheint, dass Sie das nicht tun können. Der Name .git ist hartcodiert im Quellcode: https://github.com/git/git/blob/fe9122a35213827348c521a16ffd0cf2652c4ac5/dir.c#L1260

Wahrscheinlich ein Weg ist, um ein Skript zu machen, die vor .git auf etwas anderes und zurück umbenennt und nachdem es in Repo wie

In Arbeitsverzeichnis unter scripts Hinzufügen

mv .git hidden-git 

In Dockerfile

RUN mv $JENKINS_HOME/scriptler/scripts/hidden-git  
$JENKINS_HOME/scriptler/scripts/.git 

Alter Natürlich ist es wahrscheinlich möglich, GIT_DIR Umgebungsvariable in das Plugin zu übergeben, so dass es einen anderen Namen verwenden könnte.

+0

gut wäre, die behavier dieses Plugin zu ändern. Skript ist wahrscheinlich nicht so schlecht. –

+0

@LarryCai Wenn ich diesen Code richtig lese, wird die Anpassung von GIT_DIR nicht unterstützt ... also keine Möglichkeit, den Code zu ändern. https://github.com/jenkinsci/git-server-plugin/blob/42393f76d7f5678f9ca49f8a76252be2cfa244c2/src/main/java/org/jenkinsci/plugins/gitserver/FileBackedHttpGitRepository.java#L53 Es sollte 'setGitDir' mit etwas anpassbarem Wert haben aber nichts hier. – kan

+0

nein, also werde ich Skript verwenden, um damit umzugehen. –

0
git add sub 
git commit -m "add sub directory" 

Ich möchte, dass sie als ein Git-Repo behandeln und sie aus der Ferne schieben, aber jetzt sind die Dateien unter Unterverzeichnis kann nicht aufgenommen werden?

Sie sind nicht enthalten, weil test Repo sieht subas nested git repo, and records only its gitlink, or SHA1, und nicht seine URL wie es wäre, wenn sub als Submodul hinzugefügt worden war.

Sie müssten zuerst sub an eine Remote-URL senden und dann als Submodul für test hinzufügen, um sub Dateien zu sehen.

cd test 
git submodule add -- /url/to/sub 

Oder würden Sie brauchen to use a subtree

cd test 
git subtree --prefix sub /url/to/sub master --squash 
+0

danke, und der Anwendungsfall passt nicht gut für diese Lösung –

Verwandte Themen