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」などでアクセスできることを確認
サンプルソース
// C LIB
#include <stdio.h>
// SVN LIB
#include "svn_client.h"
#include "svn_pools.h"
int main(void)
{
apr_pool_t *pool;
svn_client_ctx_t *ctx;
svn_error_t *pErr;
/********************
* APR初期化 *
********************/
// 初期化
apr_initialize();
/********************
* コンテキスト作成 *
********************/
// apr_pool_t を作成
if( !(pool = svn_pool_create(NULL)) ) {
return -1;
}
// コンテキストを作成
if( pErr = svn_client_create_context(&ctx, pool) ) {
return -1;
}
/********************
* 認証バトン作成 *
********************/
// ユーザ ID とパスワードを用いるシンプルな認証プロバイダを作成
svn_auth_provider_object_t *obj;
//svn_client_get_simple_provider(&obj, pool);
svn_client_get_windows_simple_provider(&obj, pool);
// APR 配列オブジェクトを作成
apr_array_header_t *hdr;
hdr = apr_array_make(pool, 1, sizeof(obj));
// 配列にセット
svn_auth_provider_t prov = { 0 };
APR_ARRAY_PUSH(hdr, svn_auth_provider_object_t *) = obj;
// 認証バトンを作成
svn_auth_baton_t *auth_btn;
svn_auth_open(&auth_btn, hdr, pool);
// 認証用データをセット
svn_auth_set_parameter(auth_btn, SVN_AUTH_PARAM_DEFAULT_USERNAME, "testuser1");
svn_auth_set_parameter(auth_btn, SVN_AUTH_PARAM_DEFAULT_PASSWORD, "testpass1");
// コンテキストにセット
ctx->auth_baton = auth_btn;
/********************
* チェックアウト *
********************/
svn_revnum_t RevNum;
svn_opt_revision_t PegRev;
PegRev.kind = svn_opt_revision_unspecified;
svn_opt_revision_t Rev;
Rev.kind = svn_opt_revision_head;
pErr = svn_client_checkout3( &RevNum,
//"file:///C:/svn/repo/",
"svn://localhost/",
"C:\\svn\\work",
&PegRev,
&Rev,
svn_depth_infinity,
FALSE,
FALSE,
ctx,
pool
);
return 0;
}
コンパイル・実行
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