如何在Windows上以Unix格式下载厨师烹饪书?

时间:2014-11-26 17:28:10

标签: git vagrant chef-solo berkshelf

我正在使用Vagrant,Chef solo和berkshelf在Windows 7上使用VirtualBox运行Linux VM。

Cookbook从git下载并以windows行结尾到达。其中一个是Perl脚本,然后上传到vm并执行。但它失败了,因为第一行是

#!/usr/bin/perl

并且Linux VM将此视为命令

#!/usr/bin/perl^M

如何配置以Unix格式下载.pl文件的工具(可能是Chef?)?

2 个答案:

答案 0 :(得分:1)

嗯,现在用配置设置来解决问题似乎为时已晚

git使用的算法如下:

  1. 索引时间 git可以从平台特定的行尾样式转换text file(即Windows上的CRLF,Linux和Mac上的LF,旧Mac上可能是CR)到了内部EOL表示"这是LF
  2. 在结帐时,git将内部表示转换为所有文本文件中特定于平台的EOL
  3. 控制是否应用此逻辑的设置称为core.autocrlf

    因此,为了最终解决问题,您应该准备好您的存储库,以便跨平台",即在所有(必要的)提交中重新索引文件,以便将它们作为&#放入索引中34;转换后的文本文件"。它是一个公共存储库,其中现有的提交不应该被修改?如何解决问题的方法取决于"宣传"。

    你需要决定什么对你更重要:

    1. 您需要在存储库中的所有现有提交中使用正确的行结尾。但是,所有现有的提交都将被覆盖,并且存储库的其他用户必须重新克隆它,然后重新应用所有更改(带有很多微不足道的冲突)。
    2. 您希望通过仅为实际分支中的最高提交创建修订来修复行结尾。现有的签出将像往常一样获得新的提交,潜在的用户问题会更少。
    3. 这两种方法都是recipe

答案 1 :(得分:0)

由于我无法更改cookbook存储库,我所做的就是在本地克隆它,然后添加包含以下行的文件.gitattributes

*.pl text eol=lf

解决了这个问题。