現在地に基づいて「svn ci」コマンドを確認してください

現在地に基づいて「svn ci」コマンドを確認してください

私はSVNを使って大きなプロジェクトを進めています。しかし、私はこれらの変更をコミットするのではなく、ローカルに保持したいと思います。しかし、誤ってsvn ci -m"blabla"他の人のブランチに自分の変更を入力してコミットするのはとても簡単です。ブランチには、自分が誰であるかを知ることができるいくつかの識別子があります。たとえば、次のようになります。

project-aa
project-bb
etc...

私のプロジェクトはbbプロジェクトです。正しいブランチにコミットすることを確認する方法はありますか?たとえば、送信するたびにパスのテキストに「-bb」が含まれていない場合は、確認するように求められます。

可能ですか?

答え1

シェル機能を使用します。

svn () {
    if [[ $1 == "ci" || $1 == "commit" ]] && [[ $PWD != *"-bb"* ]]; then
        echo "don't commit to someone else's branch" >&2
        return 1
    fi    
    # now, do the actual svn command
    command svn "$@"  # quotes are crucial here
}

答え2

Bash スクリプトラッパーを作成して古い場所に配置したり、既存のPATHプログラムsvnファイルの名前を変更したりできます。

スクリプトは単に引数に文字列が含まれていることを確認し、文字列が見つかったかどうかに応じて応答します。

答え3

お支払い方法子 - svn。 gitの利点(ブランチ間の高速切り替え、より良いdiff、オフライン操作のための完全なローカルコピーなど)を得ることができ、コミットしたすべての内容はローカルのgitリポジトリに移動し、コードを送信するには追加のプッシュステップが必要です。 svnに戻ります。

git-svnは常に非常に強力ではありません。時々、svnの変更を同期させることができず、変更をsvnに戻すことは時々苦しんでいます。ただし、これはユースケースには重要ではありません。

関連情報