市場ニーズ的な意味合いから、Webエンジニア界隈で大変人気のあるgitを勉強兼ねて実用することにした。
一人で作る分にはバージョン管理ツールって必須レベルではないんだけど…。
バージョン管理をするにあたって、保管場所であるリモートリポジトリ(gitではSVNで言うところの中央リポジトリのこと)を作る必要があるが、おおむね次の方法がメジャーであることがわかった。
最終的に「本家Git」に決めたのだが、
- そこに至るまでの調査結果
- 本家Gitをインストール
- リモートリポジトリを実際に作ってみる
これらを本記事にまとめた。
現在ではコマンドラインでGitを操作することは無くなり、全てGUIのTortoiseGitでやるようになりました。
エクスプローラー上のアイコンでひと目で新旧状態が分かるのが手放せません。
特にTortoiseSVNを使っていた人(=自分)にはおすすめです。
とはいえこうやって一度手を動かしとくと、原理が分かって良いですよ。
GitBashだけ使ってても便利ですしね。
リモートリポジトリ作成方法の調査
【方法1】GitHubでインターネット上に作成
メリット
- バグ管理機能・SNS・プルリクエストなど開発記録を残す仕組みが標準装備されている
- 開発機が複数あってもインターネットを通して簡単に同期できる
- なんか意識高そう
- キャラクターのタコネコがかわいい
デメリット
- 無料利用の場合、プライベートなリポジトリが作成できない
自分の糞ソースが全世界に公開され、下手すると知らん奴から「Yo! 修正させてくれ」なんて声かけられちゃったりしたら面倒くさい - そこまで卑屈にならないにしても、GitHubに置くということは「オープンソース」にすることと同義なので、今まで「フリーウェア」などと呼んでいたものを置くためにはライセンスについて少しは熟考する必要があり、面倒くさい
自分の感覚で「フリーウェア」は「自由に使ってもらいたいが、作者としてのワガママ・権利は主張させてもらいたい」という曖昧なものだから - バージョン管理をやるからには全ソースを一元管理したいが、将来的に仕事で表に出せないものを作ることになったとき困る
- ツール程度のものを一人でシコシコ作る上ではSNS等のドキュメント機能はそんなに必要ない
【方法2】自分用サーバにGitLabやGitBucketを入れて作成
メリット
- GitHubの利便性はそのままに、プライベートなリポジトリが作成できる
- 自分専用のサーバを使うので、GitHub社が潰れても行き場に困るようなことはない
デメリット
- サーバの管理が面倒くさい
- やっぱり、現時点でSNS等のドキュメント機能はそんなに必要ない
【方法3】自分用サーバに本家Gitを入れて作成
メリット
- 構成がシンプルに済む
- どうせGitの仕組みそのものの勉強が必要なので基本を抑えなきゃいけない
- 彡(^)(^)公式やけ潰れるこたないやろ!
デメリット
- 温室育ちWindows信者の自分には、CUIは敷居が高い
【調査結果】本家Gitに決定
結局のところ、自分のニーズとしては
- バージョン管理機能だけあればいい
- サーバもクライアントもWindows機かつLANで使用するので、Windowsファイル共有で繋がれば十分
- あんまり余計なことは覚えたくない
つまりシンプルなもので十分だったため、本家のコマンドラインツールさえあればいいことがわかった。
本当はコマンドなんか打ちたくないが…。
本家Gitのインストール手順
構築イメージ
最終的にこんな構成で使いたい。
いずれの機械もWindows10を使っている。
ファイルサーバへのインストール手順
まずはファイルサーバ(alicia)にGitをインストールする。
Gitをダウンロード
- https://git-scm.com/を開き、「Downloads」をクリック
- 「Windows」をクリック。インストーラ実行ファイルがダウンロードされる
インストーラー実行
git系のコマンドをMS-DOSプロンプト/PowerShellでも使えるようにするか否か。
Use Git from Git Bash only | 環境変数PATH を弄らない。安全だが、MS-DOSプロンプトでgit系のコマンドが使えない。 (bashでしかgit系のコマンドが使えない) |
Use Git from the Windows Command Prompt | デフォルト。 環境変数 PATH にgit系のコマンドを追加する。MS-DOSプロンプトでもbashでもgit系のコマンドが使えるようになる。 自分はこれを選びました。 |
Use Git and optional Unix tools from the Windows Command Prompt | 環境変数PATHを 弄る。且つ find とsort をUnix系のものに置き換える。既存のバッチ処理などが動かなくなる可能性があるので、Unix党以外は選ばないほうがいいだろう。 |
改行コードの変換に関する設定。
Windows文化の「改行」は[CR][LF]だが、Unix/macOS文化では[LF]なので、OSが混在する環境では色々ハマるんですよね。
Checkout Windows-style, commit Unix-style line endings | チェックアウト時は[CR][LF]に変換。 コミット時は[LF]に変換。 →リポジトリ全体としては修正が進むと[LF]に統一されてゆく |
Checkout as-is, commit Unix-style line endings | デフォルト。 チェックアウト時に変換しないが、コミット時は[LF]に変換。 →リポジトリ全体としては修正が進むと[LF]に統一されてゆく |
Checkout as-is, commit as-is | チェックアウト時、コミット時共に変換しない。 自分はこれを選びました。下手に変換されると逆に混乱するので。 Windows利用者としてはWindowsでCGIやシェルスクリプトを作ってLinix上で実行する場合に良くハマります。 gitが変換したのか? エディタが変換したのか? FTPクライアントが変換したのか? どれが原因だ?(^^;# |
Use MinTTY | デフォルト。 MSYS2(Unix互換環境)のターミナルエミュレータを使う。 今はどうか知らんが、昔触った時は漢字周りが話にならんレベルでボロボロだったんだよなぁ…。 |
Use Windows’ default console window | 自分はこちらを選んだ。 MS-DOSプロンプト用のウインドウを使う。 漢字を含むファイルを扱う場合は鉄板じゃないでしょうか。間違った認識だったら教えて下さい。 |
以上でインストール完了です。
リモートリポジトリの作成
ファイルサーバ(alicia)上にリモートリポジトリを作成する。
こんなディレクトリ構成でやってゆく。
F:
└─dev
└─git
├─efStat.git
├─ScraperTest.git
├─VideoTitleGetter.git
└─web.ygkb.jp.git
gitというディレクトリの中にプロジェクトやアプリケーション別にリポジトリを増やしていくことにする。
リポジトリ名の末尾に.gitと付けるのは慣例らしい。
以後、F:\dev\git\efStat.git
を作成する前提で進める。
フォルダ作成
予めリモートリポジトリにしたいフォルダを作る。
ここでは、F:\dev\git\efStat.git
コンソール(Git Bash)を開く
エクスプローラでF:\dev\git\efStat.git
を開く。
フォルダ名を右クリックして「Git Bash Here」を選ぶ。
Git Bashコンソールが開く。
*****@alicia MINGW64 /f/dev/git/efStat.git
$
コマンド実行
コマンドを入力。
git init --bare --shared=true
こうすることによりgitでの管理が開始される。
この組み合わせはおまじないレベルみたい。
引数 | 意味 |
---|---|
init |
リポジトリを作成する。 |
--bare |
ベアレポジトリとする。 管理ファイルのみを置く。 =ワークファイルは置かない =コミットできない =SVNでいうところの中央リポジトリの扱いになる |
--shared=true |
リポジトリを共有する。 |
(実行結果)
*****@alicia MINGW64 /f/dev/git/efStat.git
$ git init --bare --shared=true
Initialized empty shared Git repository in F:/dev/git/efStat.git/
Windowsファイル共有でデータのやり取りをするだけなら、これだけで完成。
任意:デーモンの立ち上げ
Windowsファイル共有ではなく、gitプロトコルを使ってやり取りする場合は、さらに待ち受け用デーモンを起動する。
…うーん、SMBプロトコルが通らない出先から自宅につなぐとか、Windowsファイル共有が使えないOSからつなぐ、とかですかね。
自分にとっては全く関係ないのでピンと来てませんが、一応立ち上げました。
デーモン経由で公開できるように指示する
cd efStat.git
touch ./git-daemon-export-ok
リモートリポジトリ用ディレクトリの直下にgit-daemon-export
-okという名前の空ファイルを作ることで設定する。
デーモンを立ち上げる
git daemon --export-all --enable=receive-pack --base-path=/F/dev/git
このとき、ファイアウォールのポートを開くか聞いてくるので許可する。
作業完了
以上でリモートリポジトリの作成作業は完了。
さいごに
以上でサーバ側の準備(リモートリポジトリ)ができた。
近日中にクライアント側の準備手順を書きます。
Git Bashで日本語の表示が化ける場合は👇を参考にしてください。
結局、Windows 10でのリポジトリ管理を止め、GitHubに移行しました(^^ゞ
Windowsだから悪いのではなく、GitHubのプライベートリポジトリが無制限になったことと、外出先でもソース管理できることが、自分にとっての決め手です。
チームで秘匿性の高い物を作るときは、依然としてローカルでのリポジトリ管理が良いと思っています。