msfukui / git-svn-overwrite

It always overwrite the git-repository contents to the svn-repository.
MIT License
0 stars 0 forks source link

git-svn-overwrite

Build Status

What's this?

git の特定の branch のコードセットを subversion の特定の branch に強制的に上書きして commit するための簡易なスクリプトです。

svn から git ベースにコード・レポジトリの移行を進めるにあたって、git 側で更新した内容を svn 側に常に最新の情報を反映しておきたいニーズがあって作りました。

移行期間中は svn は更新せずに常に git のみを使う、という前提で、常に git 側の情報で svn の内容を上書きします。

最初は git-svn をうまく使うことを考えたのですが、merge の際の conflict の解消が厳しかったので、個別にスクリプトを作りました。

かなり筋悪な対応だと思います。もっと良い方法があればぜひご指摘いただけると嬉しいです。

Requirement

Note

Usage

Preparation

$ mkdir bin; cd bin
$ wget https://raw.githubusercontent.com/msfukui/git-svn-overwrite/master/git-svn-overwrite
$ wget https://raw.githubusercontent.com/msfukui/git-svn-overwrite/master/save-commit-hash
$ chmod 750 git-svn-overwrite save-commit-hash
$ cd ..
$ ./bin/save-commit-hash git@github.com:msfukui/git-repo-sample.git master
Git-repository: [git@github.com:msfukui/git-repo-sample.git/master]

Created [.overwrite-prev_git_commit].
Saved commit SHA-1 hash value [16b67fa41447a5b6b882dd867f795bea20b560e7].
Save, OK.
$

Overwrite

dry running

$ ./bin/git-svn-overwrite --dry-run --commit-hash-file commit-hash-file.txt git@github.com:msfukui/git-repo-sample.git master svn://localhost/svn-repo-sample trunk
Dry running...
Git-repository: [git@github.com:msfukui/git-repo-sample.git/master]
Svn-repository: [svn://localhost/trunk]

Created [commit-hash-file.txt].
Saved commit SHA-1 hash value: [017220003bf740d23d750755543e712d821bffa9]
Svn commit message: [
...
]
Overwrite, OK.

commit

$ ./bin/git-svn-overwrite --commit-hash-file commit-hash-file.txt git@github.com:msfukui/git-repo-sample.git master svn://localhost/svn-repo-sample trunk
Git-repository: [git@github.com:msfukui/git-repo-sample.git/master]
Svn-repository: [svn://localhost/trunk]

Created [commit-hash-file.txt].
Saved commit SHA-1 hash value: [017220003bf740d23d750755543e712d821bffa9]
Svn commit message: [
...
]
Overwrite, OK.

License

本プログラムの提供ライセンスは MIT License です。

詳細は LICENSE.txt を参照してください。

[EOF]