特に指示がない場合は、つねにインストールして下さい。
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 [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 から手元にリポジトリのコピーを作ります。クローンと言います。
% git clone ssh://git@github.com/fmlorg/fml8
fml8 というディレクトリができます。 fml8/.git/ 以下に全データがあり、そこから最新版が fml8/ 以下に展開されています。
あとは、hack したり、hack したり、hack したり、… git add して、git commit します。
ここまでは、ローカルプレイ。 最後、変更(hack)のすべてを github へアップロードします (そうしないと他の人に見えません)。
% git push
マスターから自分が 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
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 から情報を取り出すツールとして cvsps version 2 が必要なので、 まずは cvsps をインストールしてください。
% su root # cd /usr/pkgsrc/devel/cvsps # make installpkgsrc/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
fml8 リポジトリをローカルで変換した場合、20分くらいで変換が終わります。 変換のログが 70,000 行くらい出るボリューム感で、これくらいです。 変換を実行したマシンのハードウエアは Pentium G6950 2.8GHz x2、 メモり 2 GB、 HGST SATA (RAID1 (NetBSD RaidFrame)) でした。 このマシンの速度は、だいたい"さくらの VPS v2" \1,480/月プラン程度です。
[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 |
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >