kiyoka.2008_04_16 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2008_04 OldType.Webから更新
5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
5

[オープンソース] Gaucheのsvnバインディング:調査編2

5

kiyoka.2008_04_15の話に続き、Pythonのbindingを調査してみた。

5

pysvn: DownloadsEXTからダウンロードできる。中身を見てbindingを真面目に作るのは大変そうなことが分かった。

5

メソッド数が半端じゃない。

5

以下、psvn_client.cppのクラス定義部分の引用。

5
5
void pysvn_client::init_type()
5
{
5
    behaviors().name("Client");
5
    behaviors().doc( pysvn_client_doc );
5
    behaviors().supportGetattr();
5
    behaviors().supportSetattr();
5
5
    add_keyword_method("add", &pysvn_client::cmd_add, pysvn_client_add_doc );
5
    add_keyword_method("annotate", &pysvn_client::cmd_annotate, pysvn_client_annotate_doc );
5
    add_keyword_method("cat", &pysvn_client::cmd_cat, pysvn_client_cat_doc );
5
    add_keyword_method("checkin", &pysvn_client::cmd_checkin, pysvn_client_checkin_doc );
5
    add_keyword_method("checkout", &pysvn_client::cmd_checkout, pysvn_client_checkout_doc );
5
    add_keyword_method("cleanup", &pysvn_client::cmd_cleanup, pysvn_client_cleanup_doc );
5
    add_keyword_method("copy", &pysvn_client::cmd_copy, pysvn_client_copy_doc );
5
    add_keyword_method("diff", &pysvn_client::cmd_diff, pysvn_client_diff_doc );
5
#ifdef PYSVN_HAS_CLIENT_DIFF_PEG
5
    add_keyword_method("diff_peg", &pysvn_client::cmd_diff_peg, pysvn_client_diff_peg_doc );
5
#endif
5
#if defined( PYSVN_HAS_CLIENT_DIFF_SUMMARIZE )
5
    add_keyword_method("diff_summarize", &pysvn_client::cmd_diff_summarize, pysvn_client_diff_summarize_doc );
5
    add_keyword_method("diff_summarize_peg", &pysvn_client::cmd_diff_summarize_peg, pysvn_client_diff_summarize_peg_doc );
5
#endif
5
    add_keyword_method("export", &pysvn_client::cmd_export, pysvn_client_export_doc );
5
#if defined( PYSVN_HAS_WC_ADM_DIR )
5
    add_keyword_method("get_adm_dir", &pysvn_client::get_adm_dir, pysvn_client_get_adm_dir_doc );
5
#endif
5
    add_keyword_method("get_auth_cache", &pysvn_client::get_auth_cache, pysvn_client_get_auth_cache_doc );
5
    add_keyword_method("get_auto_props", &pysvn_client::get_auto_props, pysvn_client_get_auto_props_doc );
5
    add_keyword_method("get_default_password", &pysvn_client::get_default_password, pysvn_client_get_default_password_doc );
5
    add_keyword_method("get_default_username", &pysvn_client::get_default_username, pysvn_client_get_default_username_doc );
5
    add_keyword_method("get_interactive", &pysvn_client::get_interactive, pysvn_client_get_interactive_doc );
5
    add_keyword_method("get_store_passwords", &pysvn_client::get_store_passwords, pysvn_client_get_store_passwords_doc );
5
    add_keyword_method("import_", &pysvn_client::cmd_import, pysvn_client_import__doc );
5
    add_keyword_method("info", &pysvn_client::cmd_info, pysvn_client_info_doc );
5
5
#ifdef PYSVN_HAS_CLIENT_INFO
5
    add_keyword_method("info2", &pysvn_client::cmd_info2, pysvn_client_info2_doc );
5
#endif
5
#if defined( PYSVN_HAS_WC_ADM_DIR )
5
    add_keyword_method("is_adm_dir", &pysvn_client::is_adm_dir, pysvn_client_is_adm_dir_doc );
5
#endif
5
    add_keyword_method("is_url", &pysvn_client::is_url, pysvn_client_is_url_doc );
5
#ifdef PYSVN_HAS_CLIENT_LOCK
5
    add_keyword_method("lock", &pysvn_client::cmd_lock, pysvn_client_lock_doc );
5
#endif
5
    add_keyword_method("log", &pysvn_client::cmd_log, pysvn_client_log_doc );
5
#if defined( PYSVN_HAS_CLIENT_LIST )
5
    add_keyword_method("list", &pysvn_client::cmd_list, pysvn_client_list_doc );
5
#endif
5
    add_keyword_method("ls", &pysvn_client::cmd_ls, pysvn_client_ls_doc );
5
    add_keyword_method("merge", &pysvn_client::cmd_merge, pysvn_client_merge_doc );
5
    add_keyword_method("mkdir", &pysvn_client::cmd_mkdir, pysvn_client_mkdir_doc );
5
    add_keyword_method("move", &pysvn_client::cmd_move, pysvn_client_move_doc );
5
    add_keyword_method("propdel", &pysvn_client::cmd_propdel, pysvn_client_propdel_doc );
5
    add_keyword_method("propget", &pysvn_client::cmd_propget, pysvn_client_propget_doc );
5
    add_keyword_method("proplist", &pysvn_client::cmd_proplist, pysvn_client_proplist_doc );
5
    add_keyword_method("propset", &pysvn_client::cmd_propset, pysvn_client_propset_doc );
5
    add_keyword_method("relocate", &pysvn_client::cmd_relocate, pysvn_client_relocate_doc );
5
    add_keyword_method("remove", &pysvn_client::cmd_remove, pysvn_client_remove_doc );
5
    add_keyword_method("resolved", &pysvn_client::cmd_resolved, pysvn_client_resolved_doc );
5
    add_keyword_method("revert", &pysvn_client::cmd_revert, pysvn_client_revert_doc );
5
    add_keyword_method("revpropdel", &pysvn_client::cmd_revpropdel, pysvn_client_revpropdel_doc );
5
    add_keyword_method("revpropget", &pysvn_client::cmd_revpropget, pysvn_client_revpropget_doc );
5
    add_keyword_method("revproplist", &pysvn_client::cmd_revproplist, pysvn_client_revproplist_doc );
5
    add_keyword_method("revpropset", &pysvn_client::cmd_revpropset, pysvn_client_revpropset_doc );
5
#if defined( PYSVN_HAS_WC_ADM_DIR )
5
    add_keyword_method("set_adm_dir", &pysvn_client::set_adm_dir, pysvn_client_set_adm_dir_doc );
5
#endif
5
    add_keyword_method("set_auth_cache", &pysvn_client::set_auth_cache, pysvn_client_set_auth_cache_doc );
5
    add_keyword_method("set_auto_props", &pysvn_client::set_auto_props, pysvn_client_set_auto_props_doc );
5
    add_keyword_method("set_default_password", &pysvn_client::set_default_password, pysvn_client_set_default_password_doc );
5
    add_keyword_method("set_default_username", &pysvn_client::set_default_username, pysvn_client_set_default_username_doc );
5
    add_keyword_method("set_interactive", &pysvn_client::set_interactive, pysvn_client_set_interactive_doc );
5
    add_keyword_method("set_store_passwords", &pysvn_client::set_store_passwords, pysvn_client_set_store_passwords_doc );
5
    add_keyword_method("status", &pysvn_client::cmd_status, pysvn_client_status_doc );
5
    add_keyword_method("switch", &pysvn_client::cmd_switch, pysvn_client_switch_doc );
5
#ifdef PYSVN_HAS_CLIENT_LOCK
5
    add_keyword_method("unlock", &pysvn_client::cmd_unlock, pysvn_client_unlock_doc );
5
#endif
5
    add_keyword_method("update", &pysvn_client::cmd_update, pysvn_client_update_doc );
5
}
5
5

これだけでも結構気が遠くなる。

5

まずは、svnコマンドを使ってKahuaからsubversionアクセスするようにしてみて

5

限界を感じたら必要なメソッドだけを実装する方針でいこう。