LoginSignup
5
4

More than 3 years have passed since last update.

glitchのgitにローカルリポジトリを反映する

Last updated at Posted at 2020-04-11

はじめに

glitchを用いてDiscordのbotを作ろうとしたんだけど、glitchって基本的にはブラウザ上で開発?デプロイ?する感じで作られているので、できればgitと連携できてソース管理とかはそっちでできないかなぁと思っていたんだけど、そもそもglitch自身がgit機能持っているので、そっちでソース管理する方法を調べてみた。

glitchとは

glitchを最初に知った時は、どこぞの怪しいサービスかと思ったけども、実はStack OverflowやTrelloを作っている会社だと知って、怪しんでごめんなさい。glitchは簡単に言えばNode.jsのアプリケーションや静的Webページをブラウザ上で編集、公開することができるサービス。

Import from GitLab

はじめにやりたかった事は、他のgitサービスからglitchへインポート、同期設定ができないかということ。特にfreeでもunlimited collaboratorsなGitLabと連携したかった。glitchのヘルプを見ていたら、GitLabからインポートできるとあるのでやってみた。
https://glitch.com/help/how-to-sync-a-glitch-project-with-a-git-repo-on-gitlab/
………………
でも失敗する。何度やっても失敗する。
ちなみにGitHubからインポートしてみると、ちゃんとインポートできる。glitchのTerminalからcurlでGitLabにアクセスしてみると、https://gitlab.com にはアクセスできないんだけど、https://about.gitlab.com/ にはアクセスできることが分かった。どうやらレスポンスコードが302だとアクセスできないっぽい。できるって書いてるのにー...。でもGitHubは大人数でソース管理するには有料になっちゃうし...。かといってGitLab → GitHub → glitchとかするのもバカバカしいし。

local master -push-> remote master

いろいろと調べていると、glitchはそもそもgitで構成されていることが分かったので、cloneして直接pushできないか試してみた。でもまたもや失敗した。どうやらglitchのmasterブランチはノンベアなリポジトリらしく、直接pushすることはできないらしい。一応masterに直接pushする方法はある様子。
https://nju33.com/glitch/git%20push%20%E3%81%A7%E8%87%AA%E5%8B%95%E5%8F%8D%E6%98%A0
でも次のヘルプを見ると、glitchとしてはmasterリポジトリは直接触らず、他のブランチからマージする方法を説明している。個人的にも開発でmasterを直接いじるのは微妙だと思うので、こっちの方法でソース管理するようにしたい。
https://support.glitch.com/t/possible-to-code-locally-and-push-to-glitch-with-git/2704/2

glitchのローカルリポジトリをリモートのmasterに反映する方法

1. git clone

まずglitchのgitをcloneする。
Tools -> Import and ExportからURLをコピーし、cloneする。
src01.png

2. 適当なブランチを作って、そのブランチでソースを修正する。

仮にdevelopブランチを作ることにする。ブランチを作成したら、ソースを修正してpush。

3. Terminalを開く

Tools -> Terminal でTerminalを開く。
src02.png
src03.png

4. masterブランチにマージする

Terminalで次のコマンドを叩いてみる(※これは飛ばしてOK)

$ git diff ..develop

すると、修正した内容がdiff表示される。
src04.png

次に、mergeコマンドを実行する。

$ git merge develop

src05.png

これでソースがマージされ、アプリに反映される。
src06.png
↓ちゃんと反映されている
src07.png

でも、glitchのソースブラウザには修正が反映されていないので、次のコマンドを実施する

$ refresh

src08.png
これで完了。

5. merge時に自動更新させる

mergeの際に毎回refreshするのは面倒なので、hooksで自動refreshするような設定をする。
/app/.git/hooks/配下にpost-mergeというファイルを作成し、以下の内容を追記する。

#!/bin/sh

cd /app;
git --git-dir=.git reset --hard
refresh

post-mergeファイルにchmod +xで実行権を与えれば、masterブランチにソースをマージしたら自動的にrefreshが実行されるようになる。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4