LinuxでSVNサーバーを構築する方法

LinuxでSVNサーバーを構築する方法

1: SVNをインストールする

yum インストール -y サブバージョン

2. 倉庫を作る

1: 倉庫ディレクトリを作成する

mkdir -p /var/project/test

2: 倉庫を作る

svnadmin は /var/project/test を作成します

作成が成功すると、/var/project/test ディレクトリの下に次のディレクトリが作成されます。

drwxr-xr-x. 2 ルート ルート 51 1月30日 13:26 conf
drwxr-sr-x. 6 ルート ルート 4096 1月30日 13:26 db
-r--r--r--. 1 ルート ルート 2 1月30日 13:26 フォーマット
drwxr-xr-x. 2 ルート ルート 4096 1月30日 13:26 フック
drwxr-xr-x. 2 ルート ルート 39 1月 30 13:26 ロック
-rw-r--r--. 1 ルート ルート 229 1月30日 13:26 README.txt

conf ディレクトリは svn 構成ディレクトリであり、次のものが含まれます。

-rw-r--r--. 1 root root 1080 January 30 13:26 authz #権限制御 -rw-r--r--. 1 root root 309 January 30 13:26 passwd #パスワード管理 -rw-r--r--. 1 root root 3090 January 30 13:26 svnserve.conf #SVN サービスプロセス設定

3: SVNの設定

1: 権限設定 (/var/project/test/conf/authz)

#ユーザーのグループ化 (管理者->管理者、開発->開発者、その他->その他)
[グループ]
admin = test1 #管理者ユーザー test1
development = test2,test3 #開発ユーザー test2、test3
other = test4,test5,test6 #他のユーザー test4,,test5,test6
#権限設定[/]
@admin = rw #管理者の読み取りおよび書き込み権限 @development = rw #開発の読み取りおよび書き込み権限 @other = r #その他の読み取り権限 test7 = rw #test7 ユーザーの読み取りおよび書き込み権限

2: パスワード設定 (/var/project/test/conf/passwd)

#パスワード設定、形式はユーザー名=パスワード、パスワードはプレーンテキスト[users]
テスト1 = テスト1
テスト2 = テスト2
テスト3 = テスト3
テスト4 = テスト4
テスト5 = テスト5
テスト6 = テスト6
テスト7 = テスト7

3: SVN サービス プロセス構成 (/var/project/test/conf/svnserve.conf)

[一般的な]
anon-access = none #匿名ユーザーはアクセスできません auth-access = write #認証されたユーザーは読み取りと書き込みが可能です password-db = passwd #ユーザー認証パスワードファイルを指定します authz-db = authz #権限設定ファイルを指定します

4: SVNサービスを開始します(デフォルトのポート番号は3690です)

次のようにコードをコピーします
svnserve -d -r /var/project #-d service background running -r は作業ディレクトリを指定します。/var/project は指定された作業ディレクトリを示します。ウェアハウス名アドレス (/var/project/test) は指定できないことに注意してください。

ポートを指定してSVNを起動する

svnserve -d -r /var/project --listen-port 3691

5. ファイアウォールを閉じるか、指定されたポート番号を開きます

1: ファイアウォールをオフにする

systemctl 停止 ファイアウォール

2: 指定されたファイアウォールを開く

#ポート3690を開くfirewall-cmd --zone=public --add-port=3690/tcp --permanent
#設定を更新するfirewall-cmd --reload

6: クライアントが接続してファイルをアップロードする

Windows で SVN に接続する

1: 新しいディレクトリを作成し、右クリックしてsvn checkoutを選択します


2: バージョン ライブラリに Linux SVN アドレス svn://ip:3690/warehouse 名を入力します (ここでのウェアハウス名は /var/project/test ではなく /test です)


2: ユーザー名とパスワードを入力します


この時点で、このディレクトリに .svn ファイルが生成されていることがわかり、Linux 上の svn サーバーに接続したことが示されます。

3: ファイルをアップロードする

それでは、新しいtest.txtファイルを作成し、いくつかの情報を入力します。

(1)右クリックして追加を選択


次に、test.txt ファイルを選択し、「OK」をクリックします。この時点で、test.txt ファイルにプラス記号が表示されます。


(2)アップロード

右クリックして送信を選択


コメントを記入し、アップロードするファイルを選択して「OK」をクリックします


この時点で、test.txt ファイルのプラス記号が緑色のチェックマークに変わり、アップロードが成功したことが示されます。


しかし、この時点で、アップロードしたファイルが /var/project/test ディレクトリに見つからないことがわかりました。これはなぜでしょうか?アップロードは成功しませんでしたか?
これは、SVN リポジトリにファイルをアップロードした後、アップロードされたファイルはファイルの元の形式で保存されなくなり、SVN によってカスタム形式のリポジトリ データに圧縮されてリポジトリに保存されるためです。SVN サーバー リポジトリには FSFS と BDB の 2 つの形式があります。
現時点ではLinuxでチェックアウトを実装する必要がある

4: チェックアウト

svn checkout svn://192.168.11.201/test /data/test #svn://192.168.11.201/test はチェックアウトするウェアハウスのアドレスを示します /data/test はデータをチェックアウトする必要があるディレクトリを示します


これは、以前にクライアントにアップロードしたファイルが /data/test ディレクトリにあるため確認できるのですが、ここで問題が再び発生します。クライアントにファイルをアップロードした後、毎回サーバー上でチェックアウトすることは不可能なので、自動的にチェックアウトするにはどうすればよいでしょうか。

5: 構成を自動的にチェックアウトする

/var/project/test/hooks ディレクトリに post-commit ファイルを作成し、次の内容を post-commit ファイルに追加します。

#!/bin/sh
REPOS="$1" #ウェアハウス REV="$2" #バージョン番号 export.UTF-8 #エンコーディング SVN=/usr/bin/svn #svn アドレス WEB=/data/test #更新するプロジェクト ディレクトリ $SVN update $WEB --username test1 --password test1 #--username test1 はユーザー名の設定を意味します --password test1 はパスワードの設定を意味します

コミット後に実行可能に設定する

chmod +x /var/project/test/hooks/post-commit

自動チェックアウトの設定はこれで完了ですが、最初の1回は手動でチェックアウトする必要があり、その後は行う必要がないことに注意してください。これでLinuxでのsvnサーバーのセットアップが完了しました。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux での SVN バージョン管理の一般的なコマンドの完全なリスト
  • Linux での SVN コマンドライン バッチ操作の詳細な説明
  • Linux SVN サーバーのセットアップ、クライアント操作、バックアップとリカバリ
  • Linux svn の構築と使用方法 (画像とテキスト付き)
  • Linux (centos) で SVN サーバーを構築する方法
  • Linux 上の SVN サーバーから Web ディレクトリにファイルを自動的に更新する方法
  • Linux SVNサーバーはApache httpとsvnserveスタンドアロンサーバーモードの両方をサポートし、同じアクセス権限アカウントを使用します。
  • Linux サーバー上で複数の SVN リポジトリを構成するプロセスの詳細な説明

<<:  Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

>>:  Linux で複数の mysql5.7.19 (tar.gz) ファイルをインストールする方法

推薦する

html-webpack-plugin' を使用してメモリ内に HTML ページ プラグインを生成します。

webpackjs ファイルをパッケージ化するときに、次に示すように、index.html インタ...

CSS3はさまざまな境界効果を実現します

半透明の境界線結果: 実装コード: <div> 半透明の境界線が見えますか? </...

Mysqlの日付と時刻関数を扱う記事

目次序文1. 現在の時刻を取得する1.1 現在の日付と時刻を返す1.2 現在の日付を取得する1.3 ...

Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

初めてDockerを使用してイメージをローカルにパッケージ化してデプロイするまず、私のラップトップシ...

HTML ページジャンプコード

次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

ユーザーエクスペリエンスの構築

<br />おそらく、あなたは会社に入社したばかりで、その会社が「ユーザビリティ」に関す...

MySQL データベースで機密データの暗号化と復号化を実装する方法

目次1. 準備2. MySQL暗号化関数方式2.1 MySQL 暗号化2.2 MYSQL 復号化3....

LinuxでPythonの組み込みバージョンを削除する手順の詳細な説明

大きな落とし穴、Linuxシステムに付属するPythonのバージョンを簡単に削除しないでください1....

Ubuntu 19.04 インストール チュートリアル (画像とテキストの手順)

1. 準備1.1 VMware 15 をダウンロードしてインストールするダウンロード リンク: h...

Vue コード強調プラグインの総合的な比較と評価

目次総合的な比較アクティブの観点から機能的な観点から詳細な比較1. エース2. コードミラー3. モ...

Dockerコンテナとホストマシン間の8時間の差の問題を解決する

デプロイに docker-compose を使用すると、出力ログと関連イベントが検証されて出力される...

Node8 における AsyncHooks 非同期ライフサイクル

Async Hooks は Node8 の新機能です。NodeJs の非同期リソースのライフサイクル...

MySQL データベース面接に必須の 3 つのログの紹介

目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...