Gitでローカルファイルのバックアップ

[] [] []
2009年4月14日 15:31

 Gitでローカルファイルの差分バックアップをやってみるテスト。

前提:

  • ミラーリングされているファイルサーバーがある
  • いままでは作業用PCがクラッシュしても大丈夫なように、作業後にいちいちファイルをファイルサーバー中のディレクトリに上書きコピーしていた
  • ファイル数が多くなる/容量が大きくなると面倒
  • これだと履歴管理ができない(Emacsの~.1のようなバックアップファイルに頼ることに)

 ということで、下記の手順でGitで差分バックアップをやってみる。

  1. 作業ディレクトリをgitリポジトリ化する。
    $ git init
    $ git add <対象ファイル>
    $ git commit -m "<コメント>"
      
  2. ファイルサーバーにgitのbareリポジトリを作る
    $ cd <バックアップディレクトリ>
    $ mkdir <適当なディレクトリ名>.git
    $ cd <ディレクトリ名>.git
    $ git init --bare
      
  3. ファイルサーバー内のbareリポジトリにコミット
    $ cd <作業ディレクトリ>
    $ git remote add origin <ファイルサーバー上のbareリポジトリのパス>
    $ git push master:master
      

 あとは作業が一段落したタイミングごとにコミット+pushをしていけばいいだけのはず。しかしこういう目的で使い出すとWindows上で動く、使いやすいGUIフロントエンドがほしくなるところではある。

開発メモ:ソースコード中文字列のローカライズ

2009年1月1日 19:32

 OS Xでは、ソースコード中の文字列をローカライズする仕組みとして「Stringsファイル」というものが用意されている。これは、ソースコード中で使用する文字列データをリソースフォルダ中のStringsファイル(拡張子は.string)からロードする仕組みで、言語環境に会わせて使用するStringsファイルを切り替えることで、それぞれの言語に合わせた文字列を選択できるようにするものだ。

 なお、詳細なドキュメントとしてはADCの Internationalization Programming Topics: Strings Files があるので、こちらも参照すべし。

Stringsファイルの構造

 Stringsファイルの構造は次のようになっている。

/* Insert Element menu item */
"Insert Element" = "Insert Element";
/* Error string used for unknown error types. */
"ErrorString_1" = "An unknown error occurred.";

 「/*」〜「*/」ガコメントで、続いて「”キー” = “文字列”」というデータが並ぶ構造となっている。Stringsファイルはアプリケーションバンドルの「<言語名>.lproj」ディレクトリ以下に収納されている。ちなみにデフォルトのStringsファイル名は「Localizable.strings」だが、任意の名前を付けることが可能。

Stringsファイルから文字列をロードする

 Strginsファイルから文字列を取り出すには、下記の関数を利用できる、

  • Core Foundation macros:
  • CFCopyLocalizedString
  • CFCopyLocalizedStringFromTable
  • CFCopyLocalizedStringFromTableInBundle
  • CFCopyLocalizedStringWithDefaultValue
  • Foundation macros:
    • NSLocalizedString
    • NSLocalizedStringFromTable
    • NSLocalizedStringFromTableInBundle
    • NSLocalizedStringWithDefaultValue

     たとえばデフォルトStringsファイル(Localizable.strings)中に下記のような記述があったとする。

    /* A comment */
    "Yes" = "はい";
    

     この場合、下記のようにしてローカライズ文字列を読み出せる。

    NSString* theString;
    theString = NSLocalizedString (@"Yes", @"A comment");
    

     なお、NSLocalizedStringの第2引数は省略可能。また、Localizable.strings以外のStringsファイルからテキストをロードしたい場合はNSLocalizedStringFromTableを利用する。

    Stringsファイルを作成するツール

     ローカライズする文字列を抜き出すためのツールとして、「genstrings」というものがある。たとえば、下記のように実行すると、カレントディレクトリ以下の*.mファイルからローカライズすべきテキストを抜き出し、Japanese.lprojディレクトリ以下のLocalizable.stringsファイルに書き出すとともに、*.mファイル中のテキスト文字列を「NSLocalizedString(@”文字列”, @”)に置き換えてくれる。

    genstrings -o Japanese.lproj *.m