私たちの会社には、Rails に基づいたソフトウェア用の SVN リポジトリがあります。
また、暗号化されたリポジトリを手動で更新しました - 暗号化されていないプル、RubyEncoder でエンコード、暗号化されたプッシュ。
私たちはほとんど Git に移行しており、プロセスを自動化したいと考えています。私はプロセスを自動化し、コミットごとにしたいと考えています。
そう
- サーバーは、暗号化されていない任意のブランチへのプッシュを受信します
- サーバー フィルターは .rb ファイルを変更し、それらを Rubyencoder を介して渡します
- 暗号化された .rb ファイルとその他のファイルが暗号化されたリポジトリにプッシュされ、コミット メッセージが保持されるため、コミット率は 1:1 になります。
- ブランチの作成と削除もミラーリングされます。
git-encrypt のようなソリューションとは異なり、コード リポジトリではなく、安全でないと解釈するのはお客様のコンピューターです。
私の最初の試みは、受信後の長いフックでした。これは遅く、分岐が正しく機能しなかったため、放棄しました。
私の 2 番目の試みは、フィルタの設定と設定です*.rb = rubyencode
。RubyEncoder は /dev/stdin で入力し、/dev/stdout に出力するように設定できますが、これらは git 履歴に影響を与えずにディスク上のファイルに影響するようで、受信したプッシュごとに別のコミットが必要です。clean
smudge
clean/smudge が期待どおりに機能していれば、サーバーローカルのプルとプッシュ (git remote origin add git@git.work.com:product/work_unencrypted.git
およびgit remote set-url origin --push git@git.work.com:product/work_encrypted.git
期待されるリポジトリからのプッシュとプルの取得) は、受信後のフックによってトリガーされます。
私は十分に道に迷っており、この時点で尋ねるべき適切な質問さえ知りません。たぶん、1:1 の履歴を保持するためにコミットをステップスルーして変更する方法ですか?