Gitリポジトリ内で特定のディレクトリを別なリポジトリでも管理する

タイトルが日本語になってない気もしますが。。。

bit part で作業しているときはMTのテンプレートやHTMLデータなどを一つのリポジトリでまとめて管理してます。
プログラムとかであれば余計な物が入っているとめんどそうなのでこういうことは無いとは思うのですが・・・

  • /mtml/
    • /website_theme1/
    • /blog_theme1/
    • /blog_theme2/
  • /html/
    • /index.html
    • /common/
    • /img/
    • /css/
    • /js/

こんなかんじだったりするわけですが、時々このhtmlディレクトリだけ別で欲しいとお客さんなどから言われることがあります。
単純にコピペで渡すのですむ場合はいいのですが、先方でもこのhtmlディレクトリの内容のような、htmlデータ類をGit管理などしている場合があり、そちらでも変更を加えていたりするとその辺のmergeがやっかいだな、と思うことが時々あります。

↑の例だとmtmlとhtmlディレクトリしかないですが、最近だとhtml作成にもSSG的なのを使ったりするので、_sourceディレクトリとか_layoutsとかツール用のディレクトリがあったりもします。

そういうツール含めて先方と共有できる場合はHTML絡みということでリポジトリを一つ作っておくことで、お互いハッピーにGit管理ができるのですが、先方が作業したデータをもらってこちらでマージしようと思うと、別のブランチを一個作ってそこに先方作業分をコピペしてGitでmergeとかすればいけるのかなー、とおもったりしたのですが、まぁそもそも手作業でコピペもミスりそうなので怖いところです。

差分の取り出しは´°ム°`さんが記事にされてる

gitで差分ファイルを抽出してzipにまとめる方法 - HAM MEDIA MEMO
http://h2ham.net/git-diff-file-zip

でやれるので簡単と言えば簡単ではありますが、データが一方通行出ない場合はmergeしたりなかなか大変そうなきがします。

やりたかったのはこういう感じのこと。

Gitではワーキングツリーを入れ子にできるようです - No Programming, No Life
http://npnl.hatenablog.jp/entry/20101024/1287940731

ということで、1人2役なかんじでテストしてみます。

  • gittest1/
    • gittest2/

こういう階層になっていて、gittest1とgittest2がそれぞれリポジトリを持ってる様なのを想定(片方が全体を包括してる)。

gittest1
全体をまずGitで管理して、共有しないといけない部分を
gittest2
としてここも別のリポジトリで管理するようにしてみる。

gittest1/gittest2/test1.txt
を作成して、gittest1 でまずgittest2をコミットしておく。
これやらないとsubmoduleになってしまう様子。
gittest1でgittest2をcloneしてgittest1をcommitするとsubmoduleになってしまう?みたいだった。どっかまちがったかな。

そのあと gittest1/gittest2 で

git init
git remote add hogehoge

でremoteを繋いでfetchしてあとはpull / push

別のリモートリポジトリから持ってきたときにコンフリクトしまくらないかが少々心配ではある。
コミットも分かれちゃうのでまぁその辺は目をつぶるしかないのかな。

ということで、Gitの勉強をしに「ファンタラクティブ・オープンミーティング #4」に行ってこようと思う。

【GitHub Flow & Docker】ファンタラクティブ・オープンミーティング #4 - ファンタラクティブ・オープンミーティング | Doorkeeper
http://funteractive.doorkeeper.jp/events/16962


Comments

comments powered by Disqus