読者です 読者をやめる 読者になる 読者になる

そこに仁義はあるのか(仮)

略してそこ仁!

SphinxドキュメントをGitHubに公開したんだけど、ところでGit submodule便利

こそこそと書いていたSphinxドキュメントをGithubに公開した。
(作業途中で乱暴になってしまった結果、間違って多くのファイルを失ってしまったのがつらい)

↓を見ながらやって、うまくいきました!ありがとうございます!
github のプロジェクトにSphinxドキュメントを良さげな感じにおきたい 其の一 - Study08.net 対シンバシ殲滅用人型機動兵器
github のプロジェクトにSphinxドキュメントを良さげな感じにおきたい 其の二 - Study08.net 対シンバシ殲滅用人型機動兵器

で、

↑のページで出てくるGitコマンドに「ほへー。」ってなった。

それが↓です。

git submodule 

詳細はこちら↓!
Git - サブモジュール

できること

あるリポジトリに別のリポジトリのリンクをつけることができる!
別々のリポジトリとして管理したいけど、作業するときにわざわざリポジトリ切り替えするの面倒ってときに便利!
今回は、GitHubPage用のブランチをマスタブランチに関連付けた!
そのおかげで、GitHubPage用のファイルを更新するときに、わざわざブランチを切り替えなくても、
フォルダ移動するだけでファイルの更新&コミットすることができる!捗る!!

submoduleの追加方法
git submodule add [リポジトリURL] [フォルダ名]

↑で、[リポジトリURL]のリポジトリが[フォルダ名]のフォルダに関連付けられる!
上のコマンドを打つと、「.gitmodules」ファイルができて、そこに関連付けられたリポジトリの情報が見られる。

ちなみに、今回はブランチを関連付けたので、コマンドは↓こんな感じ。

git submodule add -b [ブランチ名] [リポジトリURL] [フォルダ名]

[フォルダ名]のフォルダの中に移動して、git branchすると、[ブランチ名]のブランチが表示されていた。
ただ、ブランチの向き先が[ブランチ名]ではなかったので、

git checkout [ブランチ名]

でブランチを切り替えた。
これでリンク付けは完了!

他の人がcloneしたときは、、、

他の人がリポジトリをクローンした場合は、
[フォルダ名]のフォルダは出来ているけど、中身は空になっている!
なので、↓のコマンドを打つ必要がある。

git submodule init
git submodule update

git submodule init でローカルの設定ファイルを初期化し、次に git submodule update でプロジェクトからのデータを取得し、親プロジェクトで指定されている適切なコミットをチェックアウトします。

Git - サブモジュール


他にも、

作業の途中で、いったんGitHubのブランチを削除する必要があったんだけど、
そういう場合は↓のコマンドを使えばよかった!

git push origin :[ブランチ名]

これで、空のリポジトリを[ブランチ名]にpushして、リポジトリを削除することができた!

SphinxドキュメントをGitHubPageに移してて思ったこと

GithubPageはルートページにあるindex.htmlを参照するので、
Sphinxドキュメントを変更して「make html」コマンドを打った後、
↓のコマンドを打つ必要がある。

cp -pr build/html/* ./

でも、↑のコマンドを打つと、branchのリポジトリ構成が汚くなっちゃう…。悲しい…。
そして、↑のコマンドを毎回打つのめんどくさい…。悲しい…。

追記

コメントにて、id:tell-kさんに↑の悲しみをハッピーにする方法を教えていただきました!!
ありがとうございます!!

やったこと

①フォルダ構成を修正

とりあえず、Sphinxドキュメントのためのリポジトリ だし、
sorceフォルダとhtmlフォルダを分けたほうがすっきりするのではと、
sorceフォルダをdocsフォルダからリポジトリのルートフォルダに移動した!

フォルダ構成Before(簡略版)

└─docs
   ├─build
 │├─doctrees
   │└─html
   ├─doctrees
   ├─html
   └─source

フォルダ構成After(簡略版)

├─docs
│├─build
││├─doctrees
││└─html
│├─doctrees
│└─html
│
└─source

で、一旦、docsの中のファイルを削除する!(.git、.nojekyllファイルは消さない)

├─docs
└─source


②make.bat、Makefileの編集

make.batを編集
編集内容は↓こんな感じ

---BUILDDIR      = build
+++BUILDDIR      = ./docs
 html:
---	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+++	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)
  	@echo
---	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+++	@echo "Build finished. The HTML pages are in $(BUILDDIR)."


一応、Makefileもかえとく。

---BUILDDIR      = build
+++BUILDDIR      = ./docs
 html:
---	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+++	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)
  	@echo
---	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+++	@echo "Build finished. The HTML pages are in $(BUILDDIR)."


で、カレントディレクトリで

make html

すれば、ディレクトリ構成がきれいかつコマンドを余分に打つ必要がなくなる!はかどる!!

id:tell-kさん、ありがとうございました!!