GNU/Linux >> Linux の 問題 >  >> Linux

Subversion チュートリアル:最もよく使用される 10 の SVN コマンドと例

SVN は Subversion の略です。

Subversion は、フリー/オープンソースのバージョン管理システムです。 Subversion はファイルとディレクトリを経時的に管理します。ファイルのツリーが中央リポジトリに配置されます。リポジトリは、ファイルとディレクトリに加えられたすべての変更を記憶することを除いて、通常のファイル サーバーによく似ています。これにより、古いバージョンのコードを復元したり、コードの変更履歴を調べたりすることができます。

この記事では、いくつかの基本的な SVN コマンドを例を挙げて説明します。

SVN ワーキング コピー

SVN は、バージョン管理されたすべてのデータを保持するリポジトリであり、SVN サーバーとも呼ばれます。作業コピーと呼ばれるバージョン管理されたデータの一部のローカル リフレクションを管理する SVN クライアント プログラム。 SVN クライアントは、ネットワークを介してリポジトリにアクセスできます。複数のユーザーが同時にリポジトリにアクセスできます。

1. SVN チェックアウト – 作業コピーの作成

チェックアウト コマンドは、SVN リポジトリから作業コピーにソースをダウンロードするために使用されます。 SVN サーバーからファイルにアクセスする場合は、チェックアウトを最初に実行する必要があります。

SVN チェックアウトは作業コピーを作成し、そこからコンテンツの編集、削除、または追加を行うことができます。ファイル、ディレクトリ、トランク、またはプロジェクト全体をチェックアウトできます。チェックアウトするには、チェックアウトするコンポーネントの URL を知っている必要があります。

Syntax:

$ svn checkout/co URL PATH
  • URL はチェックアウトするコンポーネントの URL です
  • PATH を省略すると、URL のベース名が宛先として使用されます。複数の URL が指定されている場合、それぞれが PATH のサブディレクトリにチェックアウトされ、サブディレクトリの名前が URL のベース名になります。

次の例では、指定されたターゲット ディレクトリにディレクトリをチェックアウトします。

$ svn co https://www.thegeekstuff.com/project/branches/release/migration/data/cfg /home/sasikala/cfg/
A    /home/sasikala/cfg/ftp_user.cfg
A    /home/sasikala/cfg/inventory.cfg
A    /home/sasikala/cfg/email_user.cfg
A    /home/sasikala/cfg/svn-commands
Checked out revision 811.

$ ls /home/sasikala/cfg
.  ..  .svn  email_user.cfg  ftp_user.cfg  inventory.cfg  svn-commands

チェックアウトを行うと、.svn という名前の隠しディレクトリが作成され、リポジトリの詳細が含まれます。

2. SVN コミット – 変更をリポジトリに保存

作業コピーに変更を加えても、SVN サーバーには反映されません。変更を永続的にするには、SVN コミットを行う必要があります。

Syntax:

$ svn commit -m "log messages"

-m オプションでファイルを変更する理由を説明してください。

たとえば、私の作業コピーでは、「svn-commands」という名前のファイルには次の内容が含まれています。

$ cat /home/sasikala/cfg/svn-commands
checkout
commit
add
delete
update
status

$ ls -l /home/sasikala/cfg/svn-commands
-rw-r--r--  1 root root 41 Apr 16 11:15 svn-commands

このファイルに変更を加えました (たとえば、このファイルを空にするなど)。

$ ls -l svn-commands
-rw-r--r--  1 root root 0 Apr 16 11:20 svn-commands

ここでファイルをコミットして、サーバーで変更を永続的にします。

$ svn commit -m "Making the file empty" svn-commands
Sending        svn-commands
Transmitting file data .
Committed revision 813.

この後、作業コピーまたはチェックアウトを更新するたびに、変更がサーバーに表示されます。

3. SVN リスト – ディレクトリ エントリを一覧表示します

svn list は、作業コピーをダウンロードせずに SVN リポジトリのコンテンツを表示したい場合に便利です。

Syntax:

$ svn list

次の例では、作業コピーをダウンロードせずに、リポジトリ内の特定の URL で使用可能なすべてのファイルを一覧表示します。 –verbose オプションを指定して svn list コマンドを実行すると、次の情報が表示されます。

  • 最後のコミットのリビジョン番号
  • 最後のコミットの作成者
  • サイズ (バイト単位)
  • 最後のコミットの日時
$ svn list --verbose https://www.thegeekstuff.com/project/branches/release/migration/data/bin
 16 sasikala	28361 	Apr 16 21:11 README.txt
 21 sasikala 	0 	Apr 18 12:22 INSTALL
 22 sasikala		Apr 18 10:17 src/

4. SVN 追加 – 新しいファイルを SVN リポジトリに追加

新しいファイル (またはディレクトリ) をリポジトリに追加する場合は、SVN add コマンドを使用する必要があります。リポジトリには、SVN コミットを行う場合にのみ、新しく追加されたファイルが含まれます。 「thegeekstuff」という新しいファイルをリポジトリに追加しましょう。

  • ローカルの作業コピーにファイルを作成する
  • $ ls -l /home/sasikala/cfg/thegeekstuff
    -rw-r--r--  1 sasikala root 8 Apr 16 11:33 thegeekstuff
  • SVN リポジトリにファイルを追加
  • svn add filename はファイルを SVN リポジトリに追加します。

    $ svn add thegeekstuff
    A         thegeekstuff
  • 追加したファイルをコミットします
  • コミットするまで、追加されたファイルはリポジトリで利用できません。

    $ svn commit -m "Adding a file thegeekstuff" thegeekstuff
    Adding         thegeekstuff
    Transmitting file data .
    Committed revision 814.

5. SVN 削除 – リポジトリからファイルを削除

SVN delete コマンドは、作業コピー (またはリポジトリ) からアイテムを削除します。 SVN コミットを行うと、ファイルはリポジトリから削除されます。

Syntax:
$ svn delete URL

次に、最近作成された「thegeekstuff」というファイルを削除しましょう。

$ svn delete thegeekstuff
D         thegeekstuff

$ svn commit -m "Removing thegeekstuff file" thegeekstuff
Deleting       thegeekstuff
Committed revision 814.

これで、svn list を実行して、ファイルがリポジトリから削除されたかどうかを確認できます。

6. SVN Diff – 違いを表示

SVN diff は、作業コピーと SVN リポジトリ内のコピーの違いを表示します。 2 つのリビジョンと 2 つのパスなどの違いを見つけることができます。

Syntax:
$ svn diff filename

$ svn -r R1:R2 diff filename

上記の例では、filename@R1 と filename@R2 を比較しています。

ファイル thegeekstuff の内容は次のようになります。

$ cat /home/sasikala/cfg/thegeekstuff
testing

svn diff コマンドを使用して、以下に示すように、geekstuff ファイルの内容を testing から tester に編集しました。

$ svn diff thegeekstuff
Index: thegeekstuff
===================================================================
--- thegeekstuff   (revision 815)
+++ thegeekstuff   (working copy)
@@ -1 +1 @@
-testing
+tester

7. SVN ステータス – 作業コピーのステータス

svn status コマンドを使用して、作業コピー内のファイルのステータスを取得します。作業コピーが変更されているか、追加/削除されているか、ファイルがリビジョン管理されていないかなどを表示します。

Syntax:

$ svn status PATH

次の例は、私のローカル作業コピーのステータスを示しています。

$ svn status /home/sasikala/cfg
M    	/home/sasikala/cfg/ftp_user.cfg
M      	/home/sasikala/cfg/geekstuff

「M」は、アイテムが変更されたことを表します。 「svn help status」コマンドは、SVN status コマンドで表示されるさまざまな指定子について説明します。

8. SVN ログ – ログ メッセージの表示

この記事の冒頭で説明したように、SVN はファイルとディレクトリに加えられたすべての変更を記憶しています。ファイルまたはディレクトリで行われたすべてのコミットを知るには、SVN ログ コマンドを使用します。

Syntax:

$ svn log PATH

以下は、geekstuff ファイルで行われたすべてのコミットを表示します

$ svn log thegeekstuff
------------------------------------------------------------------------
r815 | sasikala | 2011-04-16 05:14:18 -0700 (Sat, 16 Apr 2011) | 1 line

Adding a file thegeekstuff
------------------------------------------------------------------------

ファイル thegeekstuff でコミットを 1 つだけ行ったため、詳細を含むログ メッセージは 1 つだけ表示されます。

9. SVN Move – ファイルまたはディレクトリの名前を変更

このコマンドは、あるディレクトリから別のディレクトリにファイルを移動したり、ファイルの名前を変更したりします。ファイルはすぐにローカル サンドボックスに移動されます (コミット後にリポジトリにも移動されます)。

Syntax:
$ svn move src dest

次のコマンドは、ファイル「thegeekstuff」の名前を「tgs」に一気に変更します。

$ svn move thegeekstuff tgs
A         tgs
D         thegeekstuff

$ ls
.#  ..  .svn  email_user.cfg  ftp_user.cfg  inventory.cfg  tgs

現在、ファイルはリポジトリではなく、作業コピーでのみ名前が変更されます。変更を永続的にするには、変更をコミットする必要があります。

$ svn commit -m "Renaming thegeekstuff to tgs" tgs
Adding         tgs
Transmitting file data .
Committed revision 816.

10. SVN 更新 – 作業コピーを更新します。

svn update コマンドは、変更をリポジトリから作業コピーに取り込みます。リビジョンが指定されていない場合、作業コピーが HEAD リビジョンで最新になります。それ以外の場合は、作業コピーを引数で指定されたリビジョンに同期します。

作業コピーで作業を開始する前に、必ず作業コピーを更新してください。リポジトリで利用可能なすべての変更が作業コピーで利用できるようにします。つまり、最新の変更。

Syntax:

$ svn update PATH

他のユーザーが URL https://www.thegeekstuff.com/project/branches/release/migration/data/cfg にファイルを追加/削除した場合、作業コピーを更新するまで、デフォルトでは作業コピーにこれらのファイルはありません。コピーしてください。

$ svn update
A  new/usercfg
A  new/webcfg
Updated to revision 819.

上記の svn update コマンドの出力で、A はこのファイルが作業コピーに「追加」されたことを表します。


Linux
  1. 例を含む10以上のLinuxVIコマンド

  2. 例を使用したコマンドチュートリアルの展開と展開解除

  3. [Linux]:最も頻繁に使用される15のYUMコマンドと例

  1. コマンド例を含むvimチュートリアル

  2. 10 の例を含む最も単純な Linux コマンド

  3. 15 の例を含む究極の Bash Array チュートリアル

  1. 例を使用したBashヒアドキュメントチュートリアル

  2. 19Linuxでの一般的なSSHコマンドと例

  3. lsof :最も一般的に使用される例