我们公司有一个基于 Rails 的软件的 SVN 存储库。
我们还有一个手动更新的加密存储库——拉取未加密,使用 RubyEncoder 编码,推送到加密。
我们大部分时间都过渡到了 Git,并且想让这个过程自动化,我想让这个过程自动化,并且每次提交。
所以
- 服务器收到推送到未加密的任何分支
- 服务器过滤器更改了 .rb 文件,通过 Rubyencoder 传递它们
- 加密的 .rb 文件和其他文件被推送到加密存储库,保留提交消息,因此提交比率为 1:1
- 分支创建和删除也被镜像。
与 git-encrypt 之类的解决方案不同,我们将其解释为不安全的是客户的通勤者,而不是代码存储库。
我的第一次尝试是一个很长的 post-receive 钩子,它很慢并且分支不能正常工作,所以我放弃了它。
我的第二次尝试是设置*.rb = rubyencode
和设置clean
和smudge
过滤器。虽然可以将 RubyEncoder 设置为在 /dev/stdin 上输入并在 /dev/stdout 上输出,但似乎这些会影响磁盘上的文件而不影响 git 历史记录,每次收到推送都需要再次提交。
如果 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
让它从预期的存储库中推送和拉取)将由 post-recieve 钩子触发。
我已经迷失了,我什至不知道此时要问的正确问题。也许这是如何逐步完成和修改提交以保持 1:1 的历史?