SVNのライフサイクル
- リポジトリを作成します。作成
この操作により、各変更の履歴を含むファイルの保存に使用される新しいリポジトリが作成されます。
- チェックアウト:チェックアウト
この操作により、開発者のプライベート ワークスペースとしてリポジトリから作業コピーが作成され、コンテンツを変更してリポジトリに送信できます。
- 更新する:アップデート
この操作によりリポジトリが更新され、作業コピーとリポジトリが同期されます。リポジトリはチーム全体で共有されているため、他の人が変更をコミットすると、作業コピーの有効期限が切れてしまいます。
- 変更を実行するには:専念
チェックアウト後、ファイル/ディレクトリの追加、編集、削除、名前変更、移動、その他の変更操作を行うことができます。最終的にコミット操作が実行されると、対応する変更がリポジトリに加えられます。
- 変更を確認します:ステータス/差分
作業コピーに何らかの変更を加えると、作業コピーはリポジトリよりも新しくなります。コミット操作の前に、status/diff 操作を使用して変更を確認することをお勧めします。
- バグを修正します:元に戻す
作業コピーに多くの変更を加え、その時点ではそれらの変更を望まなかった場合、元に戻す操作によって作業コピーへの変更がリセットされ、元の状態に復元できます。
- 競合を解決するには:マージ
マージ中に競合が発生する可能性があります。マージにはマージ操作を使用してください。SVN マージは行単位に基づいているため、同じ変更行でない限り、SVN は自動的にマージします。同じ行の場合、SVN は競合を促すため、手動で変更を確認し、変更する必要があります。コードをマージします。その中で、解決操作は競合の発見に役立ちます。
- 変更をコミットします。コミット(コメントを追加)
保留中の変更のリストにファイル/ディレクトリを追加し、コミット操作を使用して作業コピーからリポジトリへの変更を更新することを習慣にすることをお勧めします。コミットとは、コメントを追加することです。
明確
SVN作成
$ svnadmin create dir...
SVN チェックアウト操作
$ svn checkout svn://192.168.10.10/zinaer --username zinaer --password 123456
SVN 競合の解決
- コマンドで変更を表示する
$ svn diff
Index: hello.txt
===================================================================
--- hello.txt (revision 3)
+++ hello.txt (working copy)
@@ -1 +1 @@
-hello world https://skm.zinaer.com
+hello world https://skm.zinaer.com 123
- 直接送信してみてください
$ svn commit -m 'change first'
Sending hello.txt
Transmitting file data .done
Committing transaction...
svn: E160028: Commit failed (details follow):
svn: E160028: File '/hello.txt' iAs out of date
送信が失敗したことがわかります。
3. 更新して再度送信してみてください。
$ svn update
Updating '.':
C hello.txt
Updated to revision 4.
Summary of conflicts:
Text conflicts: 1
SVNコミット
- リポジトリにファイルを追加する
$ cat README.md
# 简明 SVN 教程
- ステータスを確認する
$ svn status
? README.md
? README.md がバージョン管理に追加されていないことを示します。
3.追加
$ svn add README.md
A README.md
- 専念
$ svn commit -m 'add README.md'
Adding README.md
Transmitting file data .done
Committing transaction...
Committed revision 6.
正常に送信されました... (git によく似ています)
SVNバージョンのロールバック
- ファイルを自由に変更する
$ svn status
M README.md
- 元に戻す (単一のファイルを元に戻す)
$ svn revert README.md
Reverted 'README.md'
- revert -R (ディレクトリ全体を元に戻す)
$ svn revert -R zinaer
- revert -r (コミットされたリビジョンを元に戻す)
$ svn merge -r 8:7 README.md
SVNブランチ
svn ブランチは本質的にはトランクのコピーですが、バージョン管理機能を持ち、トランクとは比較的独立しており、最終的にブランチをトランクにマージすることができ、これをプロジェクトと呼びます。
- ローカルにブランチを作成する
$ ls
branches/ tags/ trunk/
$ svn copy trunk/ branches/zhanbai
A branches\zhanbai
- ステータスを確認する
$ svn status
A + branches\zhanbai
- 新しいブランチをリポジトリに送信します
svn commit -m 'add zhanbai'
Adding branches\zhanbai
Committing transaction...
Committed revision 9.
- ここで、zhanbai ブランチで開発を開始し、index.html ファイルを作成します。
$ cd branches/zhanbai/
$ ls
hello.txt index.html README.md
- Index.html をバージョン管理に追加し、リポジトリに送信します。
$ svn status
? index.html
$ svn add index.html
A index.html
$ svn commit -m 'add index.html'
Adding index.html
Transmitting file data .done
Committing transaction...
Committed revision 10.
- トランク ブランチに切り替えて更新し、zhanbai ブランチをトランクにマージします。
$ svn merge ../branches/zhanbai/
--- Merging r10 into '.':
A index.html
--- Recording mergeinfo for merge of r10 into '.':
G .
- この時点で、トランクにはindex.htmlファイルが存在します。次に、マージ番号のトランクをリポジトリに送信します。
$ svn commit -m 'add index.html'
Adding index.html
Committing transaction...
Committed revision 12.
svnタグ
$ svn copy trunk/ tags/v1.0
A tags\v1.0
tags ディレクトリの下に v1.0 ディレクトリが作成されます。
次にステータスを確認し、タグをリポジトリに送信します。
$ svn status
A + tags\v1.0
$ svn commit -m 'add v1.0'
Adding tags\v1.0
Committing transaction...
Committed revision 13.
よく使われる
- svn log: svn バージョン、日付、パスを表示するために使用されます。
- svn diff : 特定の変更の行レベルの詳細を表示するために使用されます
- svn cat : ファイルの特定のバージョンを取得して画面に表示します
- svn list : 既存のファイルのディレクトリまたはバージョンを表示します