2016-06-01 8 views
5

のは、それがtestsubレポを移動gitサブモジュールを通常のディレクトリとしてgit repoに追加するにはどうしたらいいですか?

  • 2つのgitのレポを作成し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 .. 
  • あるか見てみましょう

    私はそれらを1つのgit repoとして扱い、リモートでプッシュしたいと思いますが、今度はsubディレクトリにあるファイルをインクルードできません。

    これを簡単な方法で通常のディレクトリと同じように扱うことができますか?私はデモのDockerfileを使用してドッキングウィンドウのイメージに私のジェンキンスデータフォルダ(JENKINS_HOME)を追加しようと、この

    ため

    ユースケース。 (ADD JEKINS_HOME /opt/jenkins

    JENKINS_HOME 
    Dockerfile 
    

    私ジェンキンは、その目的のためにGitのレポが含まれているscriptler pluginを持っています。それから私のドッカーの画像git repoのように存在する

     
    $ 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 
    

答えて

1

そうすることはできないようです。名前.gitは、ソースコード内にハードコーディングされている:https://github.com/git/git/blob/fe9122a35213827348c521a16ffd0cf2652c4ac5/dir.c#L1260

おそらく一つの方法は、前に戻って何か他のものに.gitの名前を変更し、スクリプトを作成し、scripts下の作業ディレクトリで

のようなレポにそれを追加した後ですDockerfileで

mv .git hidden-git 

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

アルターネイティブではおそらくGIT_DIR環境変数をプラグインに渡すことができるので、別の名前を使用できます。

+0

は、そのプラグインのbehavierを変更することが良いでしょう必要があろう。スクリプトはおそらくそれほど悪くはありません。 –

+0

@LarryCaiこのコードを正しく読んでも、GIT_DIRのカスタマイズはサポートされていません...コードを変更しない限り、それを行うことはできません。 https://github.com/jenkinsci/git-server-plugin/blob/42393f76d7f5678f9ca49f8a76252be2cfa244c2/src/main/java/org/jenkinsci/plugins/gitserver/FileBackedHttpGitRepository.java#L53 カスタマイズ可能な値を持つ 'setGitDir'が必要ですしかし、ここには何もありません。 – kan

+0

いいえ、私はそれを処理するためにスクリプトを使用します。 –

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

私は1つのgitリポジトリとしてそれらを扱い、リモートでそれらをプッシュしたいのですが、今のサブディレクトリの下のファイルが含まれていないことができますか?

それはsubがサブモジュールとして追加されていた場合だろうとtestがレポsubas nested git repo, and records only its gitlink, or SHA1はなく、そのURLを見ているので、彼らは含まれません。

subをリモートURLにプッシュしてから、testのサブモジュールとして追加してsub個のファイルを参照する必要があります。

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

それともto use a subtree

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

ありがとうございます。このソリューションにはユースケースがうまく収まらない –

関連する問題