SVNサンプル
環境設定
作業ディレクトリ: work/
リポジトリパス: work/sample-repo
チェックアウト先: work/checkout
手順
1. SVNリポジトリの作成
code:bash
svnadmin create work/sample-repo
2. 基本構造の作成
trunk/branches/tags の標準構造を作成
code:bash
svn mkdir -m "Initial structure" \
file://$(pwd)/work/sample-repo/trunk \
file://$(pwd)/work/sample-repo/branches \
file://$(pwd)/work/sample-repo/tags
3. trunkでの初期開発
trunkをチェックアウト
code:bash
svn checkout file://$(pwd)/work/sample-repo/trunk work/trunk
cd work/trunk
README.mdを作成
code:README.md
# Sample Project
これはサンプルプロジェクトです。
main.pyを作成
code:main.py
def main():
print("Hello, World!")
if __name__ == "__main__":
main()
コミット
code:bash
svn add README.md main.py
svn commit -m "Initial commit: Add README and main.py"
4. trunkでの追加開発
version.pyを追加
code:bash
echo "version = '1.0.0'" > version.py
svn add version.py
svn commit -m "Add version file"
main.pyにgreet関数を追加
code:python
def greet(name):
return f"Hello, {name}!"
コミット
code:bash
svn commit -m "Add greet function"
5. 古いブランチの作成(2020年プロジェクト)
proj1ブランチを作成
code:bash
svn copy file://$(pwd)/work/sample-repo/trunk \
file://$(pwd)/work/sample-repo/branches/proj1 \
-m "Create proj1 branch (2020 project)"
proj2ブランチを作成
code:bash
svn copy file://$(pwd)/work/sample-repo/trunk \
file://$(pwd)/work/sample-repo/branches/proj2 \
-m "Create proj2 branch (2020 project)"
proj1で開発
code:bash
cd ..
svn checkout file://$(pwd)/work/sample-repo/branches/proj1 work/proj1
cd work/proj1
echo "# Project 1 specific changes" >> README.md
svn commit -m "proj1: Update README"
6. アーカイブディレクトリへの移行
old_branchディレクトリを作成
code:bash
svn mkdir -m "Create old_branch directory for archiving" \
file://$(pwd)/work/sample-repo/branches/old_branch
proj1を移動
code:bash
svn move file://$(pwd)/work/sample-repo/branches/proj1 \
file://$(pwd)/work/sample-repo/branches/old_branch/proj1 \
-m "Move proj1 to old_branch (archived)"
proj2を移動
code:bash
svn move file://$(pwd)/work/sample-repo/branches/proj2 \
file://$(pwd)/work/sample-repo/branches/old_branch/proj2 \
-m "Move proj2 to old_branch (archived)"
7. trunkでさらに開発
code:bash
cd work/trunk
svn update
calculate関数を追加
code:python
def calculate(a, b):
return a + b
コミット
code:bash
svn commit -m "Add calculate function"
8. 現行アクティブブランチの作成
proj3ブランチを作成
code:bash
svn copy file://$(pwd)/work/sample-repo/trunk \
file://$(pwd)/work/sample-repo/branches/proj3 \
-m "Create proj3 branch (active)"
proj4ブランチを作成
code:bash
svn copy file://$(pwd)/work/sample-repo/trunk \
file://$(pwd)/work/sample-repo/branches/proj4 \
-m "Create proj4 branch (active)"
proj3で開発
code:bash
svn checkout file://$(pwd)/work/sample-repo/branches/proj3 work/proj3
cd work/proj3
feature3.pyを作成
code:python
def feature3():
print("Feature 3")
コミット
code:bash
svn add feature3.py
svn commit -m "proj3: Add feature3"
PROJECT3.mdを作成
code:bash
echo "# Project 3" > PROJECT3.md
svn add PROJECT3.md
svn commit -m "proj3: Add project documentation"
proj4で開発
code:bash
svn checkout file://$(pwd)/work/sample-repo/branches/proj4 work/proj4
cd work/proj4
feature4.pyを作成
code:python
def feature4():
print("Feature 4")
コミット
code:bash
svn add feature4.py
svn commit -m "proj4: Add feature4"
9. タグの作成
v1.0.0タグを作成
code:bash
svn copy file://$(pwd)/work/sample-repo/trunk \
file://$(pwd)/work/sample-repo/tags/v1.0.0 \
-m "Release v1.0.0"
proj3-v1.0タグを作成
code:bash
svn copy file://$(pwd)/work/sample-repo/branches/proj3 \
file://$(pwd)/work/sample-repo/tags/proj3-v1.0 \
-m "Release proj3 v1.0"
10. trunkでのバージョンアップ
code:bash
cd work/trunk
svn update
echo "version = '1.1.0'" > version.py
svn commit -m "Bump version to 1.1.0"
最終的なリポジトリ構造
trunk/
README.md
main.py
version.py
branches/
proj3/
proj4/
old_branch/
proj1/
proj2/
tags/
v1.0.0/
proj3-v1.0/
確認・利用方法
リポジトリ構造の確認
code:bash
svn list -R file://$(pwd)/work/sample-repo
コミット履歴の確認
code:bash
svn log file://$(pwd)/work/sample-repo
trunkのチェックアウト
code:bash
svn checkout file://$(pwd)/work/sample-repo/trunk
Git移行テスト
code:bash
git svn clone file://$(pwd)/work/sample-repo --authors-file=authors.txt -T trunk -b branches -t tags