いろいろとやりたくなってmercurialをインストールしてみました
まずは、
http://www.selenic.com/mercurial/release/
から、最新のバージョンを確認してダウンロードします。
mkdir ~/local/src
cd ~/local/src
wget http://www.selenic.com/mercurial/release/mercurial-1.4.1.tar.gz
tar xvzf mercurial-1.4.1.tar.gz
cd mercurial-1.4.1
すぐにインストールを開始したいところですが、pythonの実行環境を準備しないといけません。
.bashrcに以下を記載します
1
2
3
4
| export PATH="$HOME/local/bin:$PATH"
export TERM=xterm-256color
export PYTHONPATH=/virtual/ユーザーID/local/lib/python
alias view="vim -R" |
これで実行環境が準備できました。インストール実行します
source .bashrc
python sup.py install --home=/virtual/ユーザーID/local
これで、完了です。
続いてHTTPで公開するため、公開ディレクトリに ~/local/src/mercurial-1.4.1にできた
hgwebdir.cgi
をコピー、新たに
hgweb.configを以下のように作成します
1
2
3
4
5
6
7
8
9
10
11
12
13
| [collections]
;; レポジトリを作ってから、ここに記載します。
/virtual/ユーザーID/xxxx = /virtual/ユーザーID/xxxx/
[web]
style=gitweb
[extensions]
hgext.keyword =
color=
[keyword]
* =
[ui]
username = My Name <email at example dot com> |
を作成します
さらに、便利に使うため、.htaccessを作成
1
2
3
4
5
6
7
8
9
10
11
12
| Options +ExecCGI
RewriteEngine on
RewriteRule ^hgwebdir.cgi - [L]
RewriteRule ^(.*) /hgwebdir.cgi/$1
AuthUserFile /virtual/ユーザーID/.htpasswd
AuthGroupFile /dev/null
AuthName MembersOnly
AuthType Basic
<limit GET POST PUT>
require valid-user
</limit> |
基本認証のパスワードを.htpasswdとして、
/virtual/ユーザーID/
に保存します
以上で、インストールと環境は完成です!
つづいてレポジトリを作成
管理したいディレクトリにて、
これで完成です
レポジトリごとにいろいろな設定が可能です。
バージョン管理から除外するファイルの設定を
レポジトリの管理ディレクトリに、.hgignore というファイルを作成します。以下はサンプル
1
2
3
4
5
| syntax: glob
*.log
.htaccess
*/tmp/*
*/config/* |
これでOKです。
あとは、hgコマンドを使って操作してください。
続いてクライアント側の操作です
クライアント側にも同様にして、mercurialのインストールが必要です。まあ、クライアントもサーバーもないのがmercurialなんですけれど。
インストールが終わったら、サーバー側のレポジトリから情報を引っ張ってきます
hg clone http://example.com/xxxxxx yyyy
// xxxxxxxには、設定したレポジトリ名が入ります
//yyyyには、クライアント側に作成するレポジトリ名が入ります
これでOKです。
あとは、hg add hg ci などとやっていけばバージョン管理完成です
coreserverのSSH登録を自動化するスクリプトを作ろうかと思っていたのですが、
まてよ、必ずだれかやっているはず。。。と思いググとすぐに出てきました。
さすがです。
http://d.hatena.ne.jp/int128/20090113/1231850343
使わせてもらいました。
ありがとうございます。
http://www.lovy-studio.com/blog/?p=31
によると、
- ツール⇒詳細プリファレンスエディタから
org.poderosaprotocols.readSerializedPassword をTrueにする
- 作成したショートカットをテキストエディタで開く
- account= なんちゃら の後ろに passphrase=”XXXXXX” という形でパスワードを記述して保存。
でいける。最近うまくいかないなぁと漠然と思っていましたが、知らないだけでした。
windowsで開発、linuxで運用、でもクライアントはwindowsというLAMPなシステム開発を行っている方も多くいらっしゃると思っております。
そんな方へ。
自分のPCだけで、開発、デバックが実際の環境と限りなく同じくできるものがあるとすれば、使ってみる価値があるのではないでしょうか?
さて、実際には、
http://scratchpad.fc2web.com/colinux/install-0.7/
を参考にインストールさせてもらっています。ここでは、それをベースに、今からやるには、こうしたら便利というものを記載してみます。
その1
cygwinは、個人的には使わないので、colinuxをインストールするために入れるのは、面倒というか、邪魔かなと思っています。もっともそれ以外で使う目的があれば、別に問題ないかと思います。
高速ダミーファイル作成ツール makedummyも不要です。今は、windowsXPとかを皆さんお使いですので。
ダウンロードするのは、
coLinux-0.7.3.exe
Ubuntu-7.10.ext3.2GB.7z
です。
あとは、7z形式を解凍できる解凍ソフト(フリーであります)
その2
swapファイルは、以下のように作成します。
512Mのswapファイルの場合は
C:\> fsutil file createnew swap.img 536870912
これでOKです。
その3
上で、swapについては展開済みなので、OKです。7z形式を解凍するには、
http://www.7-zip.org/から、ファイルをダウンロードして解凍できます。
cygwinやmakedummy.exeは不要です。
その4
そのままでいけます。
その5
4つのやり方が掲載されていますが、そこに書いてあるとおり、
coLinux(0.7.x)のインストール [TAP-Win32でのNAT接続]
がお薦めです。
安定性と設定のしやすさなど、多少の犠牲はあるけれど、自分でコーディング、テストするには十分です。
ubuntuでは少しファイル名が違う部分があります。
# cd /etc/network
# editor interfaces
となります。
その6
そのままでいけます。
ただ、ubuntuでやる場合は、多少違います。ディストリビューションが違うのでそれは、仕方ありません。
vimをメインで利用する上で、便利プラグインの説明です。
しかも、これで面白いのは、windowsでもlinuxでもいけるものがほとんどだということです。
- php-doc.vim
- vtreeexplorer.vim
- snippetsEmu.vim
。。。説明はのちほど。
vimも.vimrcの設定次第でかなり使いやすいものとなります。
(windows版の場合は、_vimrcを追加・編集すればOkです)
以下は私がやっている例です。
肝となる部分だけ解説です。
シンタックス表示
行番号表示
タブをソフトタブで、実施する
set tabstop=2 softtabstop=2 shiftwidth=2
記号文字の表示がおかしくならないように
バックアップファイルを作らない
など、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| " vim:set tabstop=2 enc=utf8 :
syntax enable
set modeline
set number
set tabstop=2 softtabstop=2 shiftwidth=2
set foldmethod=marker
set laststatus=2
" 記号文字の表示がおかしくならないように
set ambiwidth=double
filetype on
filetype indent on
filetype plugin on
colorscheme ron
set nobackup
set enc=utf-8set fileencodings=iso-2022-jp,sjis,euc-jp,utf-8
autocmd FileType php :set omnifunc=phpcomplete#CompletePHP
autocmd FileType html,javascript :set omnifunc=javascriptcomplete#CompleteJSautocmd Filetype *
\ if &omnifunc == "" |
\ setlocal omnifunc=syntaxcomplete#Complete |
\ endif
"-----------------------------------------------------------------------------"
source ~/.vim/vtreeexplorer.vim
let g:treeExplVertical=1
let g:treeExplWinSize=30
"
source ~/.vim/php-doc.vim
inoremap <c-P> <esc>:call PhpDocSingle()<cr>i
nnoremap <c-P> :call PhpDocSingle()<cr>
vnoremap <c-P> :call PhpDocRange()<cr>
source ~/.vim/php-doc.vim
inoremap <c-P> <esc>:call PhpDocSingle()<cr>i
nnoremap <c-P> :call PhpDocSingle()<cr>
vnoremap <c-P> :call PhpDocRange()<cr>
let g:pdv_cfg_Author = "HASHIMOTO <hashimoto at vone dot jp>"
let g:pdv_cfg_Copyright= "xxxxx INC.2008 All rights reservied."
" phpファイルの場合 下矢印で文法チェックをする
autocmd FileType php :map <down> <esc>:!clear<cr>:!php -l %<cr>
autocmd FileType php :map <c-E> <esc>:!php %<cr>
" phpファイルの場合 =functionと打ち込むとちょっと便利にfunctionがかける
autocmd FileType php :map! =function //{{{<cr><left><left><del><del>function {<cr>}<cr>//}}}<up><up><right><right><right><right>
" phpファイルの場合 =varと打ち込むとちょっと便利にvarがかける
autocmd FileType php :map! =var //{{{<cr><left><left><del><del>var <cr>//}}}<up>
"autocmd FileType php :set tabstop=4 softtabstop=4 shiftwidth=4
map <f12> <esc>:!php /home/hashimoto/tools/ftp.php %:p 1<cr>
map! =vimh // vim: set expandtab tabstop=2 softtabstop=2 shiftwidth=2 enc=utf8 :
map <left> <esc>:bp<cr>
map <right> <esc>:bn<cr>
map <up> <esc>:ls<cr>
"
function InsertTabWrapper()
if pumvisible()
return "\<c-n>"
endif
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k\|<\|/'
return "\<tab>"
elseif exists('&omnifunc') && &omnifunc == ''
return "\<c-n>"
else
return "\<c-x>\<c-o>"
endif
endfunction |
入力モード a
入力モード(挿入)i
閲覧モードESCキー
保存:w
コピー y
ペースト p
アンドゥ u
置換 s
:5,20s/abc/def/g //5行目から20行目のahhhhhをuhyaaaaに変換するもの。
:s/abc/def/g //またビジュアルモードで範囲指定をしている場合は、
:%s/abc/def/g //ファイル全体でやるなら
:%s/^M//g (^MはCTRL+V、CTRL+M) //CR+LFの改行コードの一括
※C オプション(confirm確認しながら、置換するかどうかを選択できる)
改行をなくして連結する(各行末に空白あり) shift + j
改行をなくして連結する(各行末に空白なし) g shift + j
コメントアウト(※繰り返すと消えます!ので、注意が必要です)\x
コメントアウト(確実) CTRL+Vで矩形選択後SHIFT+i // + ESC
これで、ちょっとだけ待つと、矩形全体にコメントが入ります。
マクロ(記録開始):qa aは任意のアルファベット
マクロ(記録終了):q
マクロ(実行):@a aは記録したマクロのキー
畳み込み set fdm=marker
開く. 大文字だと中も再起的に. zo, zO
たたむ. 大文字だと外まで再起的に.# zc, zC – close,
foldの作成.zf
全部開く.zR
全体的に1段開く(foldlevel+=1). zr
全体的に1段閉じる(foldlevel-=1).zm
全部閉じる(foldlevel=0). zM
php的な畳み込み let php_folding=1あんまりお薦めではありません
インデント >とか、<
コピペ対策自動インデント =
そもそもインデントが崩れないようにコピペする:a