Subversion

前提条件

このサイトから「Source Releases Area」へ遷移し「svn-win32-n.n.n_dev.zip」のライブラリ、インクルードを取得

ApacheのサイトよりApr、APr-Utilのインクルードを取得(Apacheのカスタム(全て)インストールでも可)


環境構築

リポジトリ作成

C:\svn>svnadmin create repo
 
C:\svn>dir repo
 
 C:\svn\repo のディレクトリ
 
2010/06/25  13:47    <DIR>          .
2010/06/25  13:47    <DIR>          ..
2010/06/25  13:47    <DIR>          conf
2010/06/25  13:47    <DIR>          db
2010/06/25  13:47                 2 format
2010/06/25  13:47    <DIR>          hooks
2010/06/25  13:47    <DIR>          locks
2010/06/25  13:47               234 README.txt
               2 個のファイル                 236 バイト
 
C:\svn>
 

サーバファイル設定

[general]
### アクセス権限
anon-access = read
auth-access = write
### パスワードファイル
password-db = passwd
 

パスワードファイル設定

[users]
testuser1 = testpass1
 

データインポート

C:\svn>dir c:\svn\aaa
 
 c:\svn\aaa のディレクトリ
 
2010/06/25  13:54    <DIR>          .
2010/06/25  13:54    <DIR>          ..
2010/06/25  11:49             1,232 IMPORT.SQL
2010/06/25  13:54    <DIR>          testdir1
2010/06/25  13:54    <DIR>          testdir2
               1 個のファイル               1,232 バイト
 
C:\svn>svn import c:\svn\aaa file:///C:/svn/repo -m "test"
追加しています              C:\svn\aaa\testdir1
追加しています              C:\svn\aaa\testdir2
追加しています              C:\svn\aaa\IMPORT.SQL
 
リビジョン 1 をコミットしました。
 
C:\svn>
 
 
※SVNサーバを起動して「svn://localhost」などでアクセスできることを確認


サンプルソース

  1. // C LIB
  2. #include <stdio.h>
  3.  
  4. // SVN LIB
  5. #include "svn_client.h"
  6. #include "svn_pools.h"
  7.  
  8. int main(void)
  9. {
  10. apr_pool_t *pool;
  11. svn_client_ctx_t *ctx;
  12. svn_error_t *pErr;
  13.  
  14. /********************
  15.   * APR初期化 *
  16.   ********************/
  17. // 初期化
  18. apr_initialize();
  19.  
  20. /********************
  21.   * コンテキスト作成 *
  22.   ********************/
  23. // apr_pool_t を作成
  24. if( !(pool = svn_pool_create(NULL)) ) {
  25. return -1;
  26. }
  27.  
  28. // コンテキストを作成
  29. if( pErr = svn_client_create_context(&ctx, pool) ) {
  30. return -1;
  31. }
  32.  
  33. /********************
  34.   * 認証バトン作成 *
  35.   ********************/
  36.  
  37. // ユーザ ID とパスワードを用いるシンプルな認証プロバイダを作成
  38. svn_auth_provider_object_t *obj;
  39. //svn_client_get_simple_provider(&obj, pool);
  40. svn_client_get_windows_simple_provider(&obj, pool);
  41.  
  42. // APR 配列オブジェクトを作成
  43. apr_array_header_t *hdr;
  44. hdr = apr_array_make(pool, 1, sizeof(obj));
  45.  
  46. // 配列にセット
  47. svn_auth_provider_t prov = { 0 };
  48. APR_ARRAY_PUSH(hdr, svn_auth_provider_object_t *) = obj;
  49.  
  50. // 認証バトンを作成
  51. svn_auth_baton_t *auth_btn;
  52. svn_auth_open(&auth_btn, hdr, pool);
  53.  
  54. // 認証用データをセット
  55. svn_auth_set_parameter(auth_btn, SVN_AUTH_PARAM_DEFAULT_USERNAME, "testuser1");
  56. svn_auth_set_parameter(auth_btn, SVN_AUTH_PARAM_DEFAULT_PASSWORD, "testpass1");
  57.  
  58. // コンテキストにセット
  59. ctx->auth_baton = auth_btn;
  60.  
  61.  
  62. /********************
  63.   * チェックアウト *
  64.   ********************/
  65. svn_revnum_t RevNum;
  66.  
  67. svn_opt_revision_t PegRev;
  68. PegRev.kind = svn_opt_revision_unspecified;
  69.  
  70. svn_opt_revision_t Rev;
  71. Rev.kind = svn_opt_revision_head;
  72.  
  73. pErr = svn_client_checkout3( &RevNum,
  74. //"file:///C:/svn/repo/",
  75. "svn://localhost/",
  76. "C:\\svn\\work",
  77. &PegRev,
  78. &Rev,
  79. svn_depth_infinity,
  80. FALSE,
  81. FALSE,
  82. ctx,
  83. pool
  84. );
  85.  
  86.  
  87. return 0;
  88. }
  89.  
  90.  

コンパイル・実行

C:\MinGW>gcc -I"C:\Program Files\Subversion\include" -I"C:\Apache2.2\include" svn_sample01.c -o svn_sample01.exe "C:\Program Files\Subversion\lib\libsvn_client-1.lib" "C:\Program Files\Subversion\lib\libsvn_subr-1.lib" "C:\Program Files\Subversion\lib\apr\libapr-1.lib"
 
C:\MinGW>svn_sample01.exe
C:\MinGW>dir c:\svn\work
 
 c:\svn\work のディレクトリ
 
2010/06/25  12:46    <DIR>          .
2010/06/25  12:46    <DIR>          ..
2010/06/25  12:46             1,232 IMPORT.SQL
2010/06/25  12:46    <DIR>          testdir1
2010/06/25  12:46    <DIR>          testdir2
 
C:\MinGW>
 

※.svnディレクトリを確認


サンプルリスト

リスト

インポート

エクスポート

チェックアウト

コミット

アップデート

クリーンアップ

マージ

ロック

ロック開放







最終更新:2010年11月04日 00:39