わんこ日記 ![[RDF]](images/rdf.png)
2010-08-08(Sun) [長年日記] この日を編集
■ [git][sourceforge] cvs2gitで作ったgitリポジトリにタグを送り忘れていた
昨日の日記で、無事にsourceforge.jpのCVSリポジトリがGitリポジトリに出来たと安心していたけど、tagを送り忘れていて、sourceforge.jpのGitリポジトリで、タグが見えていないことが判明した。
$ git push --tags sf
としてタグ情報もsourceforge.jpに送った。 昨日の最後でpushするときに、git push --all sf master としてあればタグも一緒に送られていたのだけど、今回は忘れていたので、あとからtagをpushした。
2010-08-07(Sat) [長年日記] この日を編集
■ [sourceforce][cvs][svn][git] soruceforce.jpのリポジトリをgitにする (まだ失敗)
sourceforge.jpで管理しているMail送信先確認プログラムは、現在CVSでソースリポジトリを管理しているけれど、最近の流行はCVSやSubversionのような集中型バージョン管理プログラムではなくて、gitのような分散型バージョン管理プログラムなので、Sourceforge.jpでも使えるGitでのソースリポジトリ管理に変える事にした。
まずはcvs2svn → git-svn によって変換しようとして失敗した例。
1. CVSリポジトリをローカルに持ってくる
$ rsync -avz rsync://cvs.sourceforge.jp/cvsroot/mdc .
2. 次にcvs2svnでSubversionのリポジトリに変換
% cvs2svn -s mdc-cvs2svn mdc
これでは、/trunk/BetaProject,/trunc/CSVROOT...なので、/BetaProject/trunkに変換
% svnadmin dump mdc-cvs2svn > dump
% perl -pi -e 's|Node-path: trunk/([^/\n]*)|Node-path: $1/trunk|' dump
CVSROOTはCVS用なので削除
% svndumpfilter exclude 'trunk/CVSROOT' < dump > dump2
きれいになったSubversionリポジトリを展開
% svnadmin create mdc-git
% mkdir tmp
% cd tmp
% svn co file://$HOME/mdc-svn
% cd mdc-svn
% svn mkdir BetaProject
% svn ci -m "new directories"
% cd ../..
% svnadmin load mdc-svn <dump2
svn mkdirしているのはフォルダーを作っておかないとdumpのloadに失敗するかららしいが、これをやっても失敗する…
ということで残念ながら…
3. とりあえずは、「/BetaProject/trunkに変換」はあきらめてcvs2svnのまま、git svn clone -sしてgitに取り込む。
しかし、うつくしいソースリポジトリが作れず失敗…
■ [sourceforce][cvs][git] git cvsimportでトライ
そんな事をしているうちに、「git cvsimport なんてコマンドが有る事をしったので、
$ git cvsimport -d $HOME/mdc -C mdc-git BetaProject
としたけど、結局/CVSROOTが入ってしまって、cvs2svn→git-svnと変わらず…
■ [sourceforce][cvs][git] 完成! cvs2gitでsourceforge.jpのリポジトリをGitに移行
なんとかいらない/CVSROOTを消しながら良い方法は無いかと、/usr/share/doc/cvs2svn/examples/をあさっていて、cvs2gitコマンドか有ることを発見。これが一番良かったので、sourceforge.jpのソースリポジトリをCVSからGitに変更するにはこれを利用することにした。
1. CVSリポジトリをローカルに持ってくる
$ rsync -avz rsync://cvs.sourceforge.jp/cvsroot/mdc .
2. 次にcvs2gitでSubversionのリポジトリに変換
ここで、/CVSROOTが入らないように/BetaProjectとから取ってくるのと、一時的にdump fileを作るがそれを上手く展開するのがミソ
$ cvs2git --username="Takuya" --keep-cvsignore --blobfile=git-blob --dumpfile=git-dump mdc/BetaProject
$ mkdir mdc-git
$ cd mdc-git
$ git init --bare --shared
$ cat ../git-blob ../git-dump |git fast-import
3. コミットユーザとメールアドレスの変更
sourceforge.jpのCVSリポジトリはcommitしたユーザがsourceforge.jpのユーザ名になっているので、Gitらしく正しいユーザ名とメールアドレスを設定する。
$ git filter-branch --commit-filter '
ORG_EMAIL="takuya-o";
NEW_EMAIL="takuya@page.on-o.com";
NEW_NAME="Takuya";
if [ "$GIT_AUTHOR_EMAIL" = "$ORG_EMAIL" ]; then
GIT_AUTHOR_NAME="$NEW_NAME";
GIT_AUTHOR_EMAIL="$NEW_EMAIL";
GIT_COMMITTER_NAME="$NEW_NAME";
GIT_COMMITTER_EMAIL="$NEW_EMAIL";
git commit-tree "$@";
elif [ "$GIT_COMMITTER_EMAIL" = "$ORG_EMAIL" ]; then
GIT_AUTHOR_NAME="$NEW_NAME";
GIT_AUTHOR_EMAIL="$NEW_EMAIL";
GIT_COMMITTER_NAME="$NEW_NAME";
GIT_COMMITTER_EMAIL="$NEW_EMAIL";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
参照: Pro Git 6.4歴史の書き換え - メールアドレスの一括変更
4. sourceforge.jpのGitリポジトリにpush
まずはsourceforge.jpでGitリポジトリを使えるように「プロジェクトで利用するツールの選択」でGit機能を有効にして、「Git管理ページで、「新規Gitリポジトリを作成」で「BetaProject」リポジトリを作成してから、
$ git remote add sf takuya-o@git.sourceforge.jp:/gitroot/mdc/BetaProject master
$ git push sf master
として、sourceforge.jpのGitリポジトリに載せて、CVS→Gitの移行完了。
2010-07-31(Sat) [長年日記] この日を編集
■ [Debian] flashplugin-nonfreeがadobe-flash-player-browserpluginに変わった
Debian testingなので、パッケージ: flashplugin-nonfree (1:2.8.1)を使っていたのだけど、chromium-browserでYuTubeで「Flash Playerがないよ」と出ると思ったら、Debian unofficialに、 adobe-flash-player-browserplugin-amd64が有ったので使ってみることにした。
2010-07-30(Fri) [長年日記] この日を編集
■ [git] sshでgitサーバに接続できるようにするためのサーバの準備
sshで接続できるgitサーバ作るには、gitというユーザ作って、その.ssh/authorized_keysファ イルに接続したい人のSSH公開キーを並べればよい
# adduser --system --home /var/cache/git --no-create-home --gecos "create by takuya" --gid 33 --disabled-password --disabled-login git
# mkdir ~git/.ssh
# cat ~takuya/.ssh/id_rsa.pub >~git/.ssh/authorized_keys
# chown -R git.www-data ~git/.ssh
あとは、ユーザーgitがsshdで入れるように登録して (sshで入れるユーザ制限していることに気かず、これ忘れていて、少し時間が掛かってしまった)
$ git clone git@on-o.com:test.git
Initialized empty Git repository in /home/akuya/test.git/
remote: Counting objects: 38, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 38 (delta 6), reused 32 (delta 5)
Receiving objects: 100% (38/38), done.
Resolving deltas: 100% (6/6), done.
と取れること確認した。
2010-07-28(Wed) [長年日記] この日を編集
■ [git] プロキシー超えてgit clone http://..する
サーバ側は、bareのgitリポジトリがWebDavで見えるようにすればよい。
クライアント側が認証付きプロキシーを使わないといけなかったので面倒だった。
結局、環境変数 all_proxyに http://ユーザ:パス@プロキシーサーバ:8080 と入れれば良かったんだけど、環境変数http_proxyで設定したのでhttpsだとダメだとか、httpsだとオレオレ証明書なので
$ git config --global http.sslVerify false
とないとダメだったとかに気づくまでに時間が掛かった。
まだ、.netrcがうまくgitからつかえていないけど… (なんでか不明)
2010-07-27(Tue) [長年日記] この日を編集
■ [mozc][Debain] mozcがDebian testingに入った
いままで、google日本語入力のオープンソース版のmozcは自分でビルドしていたけれど、最近、アイコンもちゃんと入ったDebian testginのパッケージになった。
これで、ビルドの手間は減るけれど、「私家版Mozc辞書」(なんかJS/Redirという木馬が検知されるのでリンクは張りません)とか組み込んで辞書拡充していたんだけど、それが有効にならないので結局、ローカルバージョン作ってビルドしなきゃだめかなぁ〜
2010-07-19(Mon) [長年日記] この日を編集
■ [Ubuntu] ブートできなくなる
今日、Ubuntu 10.04 LTSをブートしたら
Kernel panic-not syncing:VFS: Unable to mount root fs on unkno wn-block(0,0)
と出てブートできない。
色々調べてみるとgrabを再インストールすると良いらしいので、「RecoveringUbuntuAfterInstallingWindows」を参考にして、Ubuntu 10.04 LTSのインストールCDでLive Linuxでgrubをreinstallした。
しかし、これでもうまくいかないので、linux-imageの再インストールを試みた。
Ubuntu 10.04 LTSのインストールCDでLive Linuxかインストールか選択する画面で、F6を押してブートパラメータをfile=を残して後は消してroot=/dev/sdb5としてrootドライブをつなげて起動した。残念ながらインストールCDと同じkernelバージョン(2.6.32-21)のモジュールは残っていなかったのでネットワークは使えなかったけれど、linux-image-2.6.32-24-genericのdebパッケージのキャッシュは残っていたので、aptitudeで再インストールした。
linux-iamgeの再インストールによりUbuntuがブートできるようになった。(ほっ)
2010-07-16(Fri) [長年日記] この日を編集
■ mail2entryが失敗する
2007年4月8日の日記で問題が発生して以来ちゃんと動いていたのだけど、python 2.6になったら、
Traceback (most recent call last):
File "/usr/local/mail2entry/mail2entry.py", line 59, in <module>
from settings import *
ImportError: No module named settings
とsetting.pyをimportする所でエラーメールが帰ってくるようになってしまった。
.pycが2.5で作られたのがいけないのかと思って、.pycを一度消してコンソールからmail2entry.pyを起動して.pycを作り直したがうまくいかない。
とりあえず、python 2.5で実行させるために
--- mail2entry.py.latest 2006-09-03 22:51:48.000000000 +0900
+++ mail2entry.py 2010-07-17 02:41:26.727474642 +0900
@@ -1,4 +1,4 @@
-#! /usr/bin/env python
+#! /usr/bin/env python2.5
"""Post a new MT entry from a mail message"""
として、最新版のPython 2.6ではなくて2.5を使うようにした。
しかし、これでも/tmp/log-tracebacks.log
2010-07-17 02:02
Traceback (most recent call last):
File "/usr/local/mail2entry/mail2entry.py", line 27, in main
{ 'imageurl' : imageurl }, imageurls )
File "/usr/local/mail2entry/mail2entry.py", line 27, in <lambda>
{ 'imageurl' : imageurl }, imageurls )
KeyError: 'caption'
とエラーが出てしまう。
これは「元に戻したのに変だなぁ」ってことで長い時間はまってしまった。
なんと、2007年4月8日の日記以来うまく動いていたのは settings.pyc が古いままだったからだ。2009年8月16日にsettings.pyで、
-imgtemplate = "<img src=\"%(imageurl)s\">"
+imgtemplate = "<img src=\"%(imageurl)s\" alt=\"%(caption)s\"/>"
mail2entry.pyを
--- mail2entry.py.org 2003-05-07 11:10:12.000000000 +0900
+++ mail2entry.py 2010-07-17 03:13:32.351974311 +0900
@@ -1,4 +1,4 @@
-#! /usr/bin/env python2.2
+#! /usr/bin/env python2.5
"""Post a new MT entry from a mail message"""
@@ -24,7 +24,8 @@
if images :
imageurls = saveimage.save ( images )
imagecontent = map ( lambda imageurl : imgtemplate % \
- { 'imageurl' : imageurl }, imageurls )
+ { 'imageurl' : imageurl,
+ 'caption' : content.getTitle() }, imageurls )
else :
imagecontent = u''
という修正を入れて、動くようにした。
2010-06-30(Wed) [長年日記] この日を編集
■ [Security] ポットのIPリスト
6月19日の日記のように、Brute force攻撃を受けているので、どんなIPアドレスが使われているのか、2009年12月11日の日記のように接続してきたIPアドレス一覧(今回はユーザ名無し)を作り同じようにiptablesでDROPするようにした。
|
|

