2012/11/26

git archive で指定ファイルを除外する

git archive コマンドを使えばリポジトリをアーカイブできるみたいです。

けれど .gitignore とかはアーカイブにはいらないのでどーにかできないかな、と思っていると tar とかでフィルタする 方法があるらしい。

けれど Mountain Lion にデフォルトで入っている tar には --delete オプションが無い様子。

で、もう少し調べると .gitattributes  なるものがある様子。
これを書いているとファイルに対していろいろと設定できるらしく、 export-ignore と書いているとarchiveに含まれなくなるみたい。

.gitignore 除外のための .gitattributes の例はこんな感じ
.gitattributes を書いて実際にアーカイブを試してみるけれど
$ git archive HEAD -o archive.tgz
だと除外されずに変わらない。
$ git archive
を打つと --worktree-attributes なるオプションがあるらしいので、これを付けるとちゃんと 除外された。
なので
$ git archive HEAD --worktree-attributes -o archive.tgz
とかするとOK。

それで、.gitattributes の試しに作ってみたのが このリポジトリ
.gitignore と include.txt と exclude.txt と archive.sh があって、.gitignore と exclude.txt は .gitattributes で export-ignore してる。

archive.sh を走らせると archive.tgz ができる。
解凍して中を見ると、include.txt と archive.sh しか入っていないはず。
実際にどのコマンドが走ってるのは archive.sh を見てみてください。

これで archive に必要無いファイルをgitできちんと管理しながら git archive から除外できそう。

Mail.app で GMail を使って添付ファイルを送信できない

Mountain Lion の Mail.app 6.2 で添付ファイルを付けて送ろうとすると
Cannot send message using the server
 とか言われて弾かれた。

けれど Connection Doctor を使うときちんとログインまで確認できる。
使っているのはGMailだったので、Webから同じ添付ファイルを送信しようとしたら
エラー
hoge.tgz には実行ファイルが含まれています。 セキュリティ上の理由により、Gmail ではこの種類のファイルを送信できません。
と怒られた。

調べてみると、GMailは送信時に一部のファイル形式を含めばアーカイブしていても弾くらしい。


とりあえず、 .sh とか .rb とか入ってるのだけれど外して固めても怒られるし、 .sh は生で送れたりするし、pdfをtgzに固めても怒られたり、空のtgzだと怒られなかったりするので何を検出しているのかは謎。

一部のファイル形式らしき拡張子のファイルも無いアーカイブなので、何が検出されているのかは本当に謎。うーん。

2012/11/23

Macで濁点半濁点もきちんと補完できるzshを使う

標準で Mac に入ってるの /bin/zsh はファイルに濁点とか半濁点が付いてると、補完の時に

% less ~/Desktop/ほけ<3099>

とかってなってしまう。原因はMacのファイルシステムでの日本語の扱いの問題らしい。
それで、mac の zsh で日本語の濁点・半濁点付き仮名を正常に補完できる様にする : アシアルブログ なるものを試してみた。


環境 : OS X Mountain Lion, Homebrew インストール済み

インストール方法は基本的には上のリンクのまんま。
まずは
$ brew tap waltarix/customs
なんか Warning 出てたけれど大丈夫っぽい。

それで
$ brew install --use-gcc --disable-etcdir waltarix/customs/zsh
くらい。
依存の waltarix/customs/ncurses が brew install だと入らなかったので --use-gcc 付けてみたら通った。 --disable-etcdir は info になんか書かれてたので追加。まー、 /etc は使ってる記憶も無いから良いかな、と。

無事インストールできたのでログインシェルに設定。だけど
$ chsh -s /usr/local/bin/zsh
しようとすると
chsh: /usr/local/bin/zsh: non-standard shell
とか言って弾かれた。

こことか見ると、/etc/shells にログインシェルを追加しないといけないみたい。

なので
$ sudo vim /etc/shells
して
/usr/local/bin/zsh
を追加して
$ chsh -s /usr/local/bin/zsh
したらログインシェルの変更終了。


ちなみに、ログインシェルの変更は chsh だと思っていたけれど chpass とかもあるらしく、
$ man chpass
すると chpass, chsh, chfn はどうやら一緒っぽさげな様子。

さらにちなみにだけれど、 sudo vim したら警告っぽいの出てた。正しい方法があるのかな。

2012/11/06

Maven でエンコーディングを指定する

Maven を使っていてエンコーディングを指定しないと

$ mvn compile

の時に

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!

とか出るので、エンコーディングを指定する方法。


こことかを参考に、

<project>
  ...
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  ...
</project>
 を pom.xml に追加すればOK。

一応 pom.xml の例はこんな感じ。