[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

パッケージ: git

特に指示がない場合は、つねにインストールして下さい。

Important: チェックポイント

□ ターゲット     /usr/pkgsrc/devel/git
□ /etc/rc.conf    不要
□ 設定ファイル    なし
□ ポート番号     なし
□ 動作の確認     gitが起動する

注意: # や % の意味が分からない人は 用語 を参照してください。

インストール

% su root
# cd /usr/pkgsrc/devel/git
# make install

Caution

2011/04 以降: make packege ではなく make install を使ってください。 事情の詳細は the Section called 2011 春: make install および make package の動作が変わる 節を参照してください。

GitHUB の基本的な使い方

github [1] のアカウントの作り方、どうやって ssh でアクセスするのか? などは、書籍 [2] なり、ググってね(きっと qiita.com とかが教えてくれますよ(w))。

以下の二つを例にします。例にするのは、 自分がマスターを握っているリポジトリ

https://github.com/fmlorg/fml8
と、榎本(卒業生,弟子)が、マスター(https://github.com/user340/basepkg)で、 そこから自分(fmlorg)にフォークした
https://github.com/fmlorg/work-forked-baspkg
の二つです。

GitHUB の基本的な使い方: 初期化

最初に github から手元にリポジトリのコピーを作ります。クローンと言います。

% git clone ssh://git@github.com/fmlorg/fml8

fml8 というディレクトリができます。 fml8/.git/ 以下に全データがあり、そこから最新版が fml8/ 以下に展開されています。

あとは、hack したり、hack したり、hack したり、… git add して、git commit します。

ここまでは、ローカルプレイ。 最後、変更(hack)のすべてを github へアップロードします (そうしないと他の人に見えません)。

% git push

GitHUB の基本的な使い方: フォーク

マスターから自分が hack するリポジトリを作成することを「フォークする」と言います。 フォークは github.com 上での操作です。 書籍なり、ぐぐるなりしてください。

ここでは、フォークした先が次の URL とします。

https://github.com/fmlorg/work-forked-basepkg

次は、フォークしたリポジトリを手元に持ってきます、これは、いつもの git clone です。

% git clone ssh://git@github.com/fmlorg/work-forked-basepkg
あとは master なり、
% git checkout master
ブランチなりで作業します。 ちなみに、ここは git らしく、ブランチ(例: feature/nbpkg-build)を作るべきです。

作業結果は、フォークしたリポジトリへ戻します。 これも git push などいつもの操作です。

違うのは、本家のアップデート分を手元のリポジトリへ持ってくる操作です。 github.com 上で直接操作できそうですが、そうではなく、 一度手元に持ってきて、github.com(のフォーク先)へ再アップロードすることになります。

このためにはアップストリーム先を大元の URL に変更する必要があります。 これは git remote add upstream ... という呪文で行います。

まず、手元に持ってきます。

% git remote add upstream ssh://git@github.com/user340/basepkg
% git pull --rebase upstream master
そして、フォーク先に再アップロードしてください。
% git push origin
なおうレノ例は master ブランチの場合です。 それ以外のブランチ(例: feature/nbpkg-build)のアップロードには、 もう少し呪文が必要です (実際のところ、ブランチの作業さほで、 単に git push すれば、エラーメッセージに、こうしろと出てくるので、そのとおりにどうぞ)
% git push --set-upstream origin feature/nbpkg-build

github.com にアクセスする際に証明書が足りない

git clone https://github.com/userXXX/repo.git
Cloning into 'repo'...
fatal: unable to access 'https://github.com/userXXX/repo.git':
SSL certificate problem: unable to get local issuer certificate
と言われてしまうと思います。 以下の呪文で git が firefox の証明書を見るよう設定を入れてみてください (注意: もちろん事前に pkgsrc/security/mozilla-rootcerts をインストールしている必要があります)。
git config --global http.sslcainfo /usr/pkg/share/mozilla-rootcerts/cacert.pem
(これは pkgsrc の問題でしょうかね。 すべてのプログラムでうまくいくためには、 やっぱり /etc/openssl/certs に入れないとダメなのかもしれません?)

CVS から GIT への変換

cvs から情報を取り出すツールとして cvsps version 2 が必要なので、 まずは cvsps をインストールしてください。

% su root
# cd /usr/pkgsrc/devel/cvsps
# make install
pkgsrc/devel/cvsps3 ではなく pkgsrc/devel/cvsps (version 2) のほうです。

変換には、そこそこの時間が必要なので、同じ PC 上に cvsroot 以下を準備します。 リモートアクセスしながらの変換も可能ですが、途中で回線が切れたら、 ちょっと涙でちゃいますので。

% git cvsimport -v -C $GIT_REPOSITORY -d $CVSROOT $CVS_REPOSITORY
引数は、それぞれ次の意味です。
-v                     verbose モードで作業ログをすべて表示
-C $GIT_REPOSITORY     生成する git ローカルリポジトリ(のディレクトリ)名
-d $CVSROOT            変換する元の cvsroot  
   $CVS_REPOSITORY     変換したい CVS リポジトリ ($CVSROOT 以下の相対パス)

CVS リポジトリ /cvsroot/repo-cvs を repo (git ローカルリポジトリ)へ変換します。 作業手順は単純です。 (1) cvs から git への変換

% mkdir work
% cd work
% git cvsimport -v -C repo -d /cvsroot repo-cvs | & tee log
ログを確認して処理が正常であることを確認 [3] 後、 次のステップ(branch 情報の削除)へすすんでください。

(2) branch 情報の削除:

% git branch |grep -v master > /tmp/branch
% git branch -D `cat /tmp/branch`
CVS vendor 情報が branch として作られてしまうため、 それらを削除します。 正しい手順をふんでいれば、 次のように master 以外のブランチは表示されないはずです。
% git branch
* master

(3) GIT 共用リポジトリの作成

% mkdir /gitroot/repo.git
% ( cd  /gitroot/repo.git ; git init --bare --shared=0660 )

(4) GIT 共用リポジトリの指定

% git remote add origin localhost:/gitroot/repo.git

(5) GIT 共用リポジトリへのアップロード

% git push origin master

(6) GIT 共用リポジトリからクローンできるかを確認

% git clone localhost:/gitroot/repo.git
% ls
repo
% cd repo
% git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
% git branch
 * master
% git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

事例: CVS から GIT への変換

fml8 リポジトリをローカルで変換した場合、20分くらいで変換が終わります。 変換のログが 70,000 行くらい出るボリューム感で、これくらいです。 変換を実行したマシンのハードウエアは Pentium G6950 2.8GHz x2、 メモり 2 GB、 HGST SATA (RAID1 (NetBSD RaidFrame)) でした。 このマシンの速度は、だいたい"さくらの VPS v2" \1,480/月プラン程度です。

Notes

[1]

github と git は全然ちがうものです。 git はフリーソフトウエアのことで、 github は GIT プロトコルを理解できる商用プラットフォームの名前(会社名、サービス名)です。 フリーソフトウエアについては、github はを、いくらでも無料で使えるため、 フリーソフトウエアの一大情報交換プラットフォームになりました。

2018年6月マイクロソフトによる github.com 買収が完了しましたが、 特に使い勝手に変わりはないようです。

[2]

技術評論社の 【改訂新版】Gitポケットリファレンス は買っておいて損はないとおもいます。

[3]

次の行は正常なログなので、これらを無視して、エラーがないかを確認します。

^cvs rlog: Logging 
^Fetching 
^New 
^Update 
^Parent ID 
^Committed patch 
^Commit ID 
^Tree ID 
^Parent ID 
^Delete 
^Created tag 

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >