Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何处理rails加密凭证文件中的合并冲突_Ruby On Rails_Credentials_Ruby On Rails 6 - Fatal编程技术网

Ruby on rails 如何处理rails加密凭证文件中的合并冲突

Ruby on rails 如何处理rails加密凭证文件中的合并冲突,ruby-on-rails,credentials,ruby-on-rails-6,Ruby On Rails,Credentials,Ruby On Rails 6,使用Rails6(或5.2)加密凭据,我在credentials.yml.enc文件中管理和解决合并冲突时遇到困难。正如文档中所概述的,其目的是可以将加密凭据添加到源代码管理() 例如。 branch\u a为服务a添加凭据并合并到master branch_b为服务b添加凭据,重新设置基址时,credentials.yml.enc文件中的冲突如下所示: <<<<<<< HEAD sahdkajshdkajhsdkjahsdkjahsdkajhsdkja

使用Rails6(或5.2)加密凭据,我在
credentials.yml.enc
文件中管理和解决合并冲突时遇到困难。正如文档中所概述的,其目的是可以将加密凭据添加到源代码管理()

例如。
branch\u a
服务a添加凭据并合并到master
branch_b
服务b
添加凭据,重新设置基址时,
credentials.yml.enc
文件中的冲突如下所示:

<<<<<<< HEAD
sahdkajshdkajhsdkjahsdkjahsdkajhsdkjahsdkjahdskjahsdjkahsdencryptedstring-a09dpjmcas==
=======
laskdjalksjdlakjsdlaksjdlakjsdlaksjdlakjsdlajsdlkajsdlkjasdljalsdajsdencryptedstringrere=
>>>>>>> branch_b
分支机构

我可以查看每个分支上未加密的
credentials.yml.enc
,并手动解决冲突,但是否有更好的方法来管理凭据以避免这些凭据冲突

通常建议忽略版本控制中的凭据,即
.gitignore
,并通过环境变量进行配置

我不相信有更好的方法,没有

由于加密的性质,在加密状态下无法解析它。如果这是可能的,这意味着您可以以某种方式知道处于加密状态的文件的值和密钥


进行合并时,应解决源文件中的任何冲突,然后重新运行生成加密文件的命令,然后完成合并。

这是可能的。从
rails凭证
用法:

=== Set up Git to Diff Credentials

Rails provides `rails credentials:diff --enroll` to instruct Git to call `rails credentials:diff`
when `git diff` is run on a credentials file.

Running the command enrolls the project such that all credentials files use the
"rails_credentials" diff driver in .gitattributes.

Additionally since Git requires the driver itself to be set up in a config file
that isn't tracked Rails automatically ensures it's configured when running
`credentials:edit`.

Otherwise each co-worker would have to run enable manually, including on each new
repo clone.

Rails 6中加密凭证的全部意义在于,它们可以处于版本控制中。谢谢你的回复。出于这个原因,我还决定对非生产凭证使用不同的系统。尚未实现,但我只打算使用凭证文件来管理生产,当然,只有团队的某些成员有权访问。这将消除冲突问题too@ekampp在提问时,他的回答是正确的。从那时起,添加了此功能。文档链接:和PR