2016-02-19 52 views
14

我找不到任何具体的,但如果我错过了,请让我知道。Git拉,但从来没有推文件

我在git中有一个文件需要在那里。一旦拉下来,每个人都需要编辑它以将自己的凭证添加到它。当由个人编辑时,我不希望它显示为已更改或任何内容,因为我们希望将通用文件保留在我们的回购中而没有凭据。是否有一个选项将文件设置为“拉取此文件但从不推送”? 目前我们的设置是该文件名为Upload.bat_COPY_EDIT_RENAME,希望能够使它明白该怎么做,并且在.gitignore中有Upload.bat。我想要一些更愚蠢的证据。

我知道有类似--assume的选项不变,但我不想每次都运行它,它看起来有点像一个bandaid修复程序,可能会在稍后导致问题。

感谢您的帮助!

回答

5

我会建议一个稍微不同的方法...您可以编写您的Upload.bat使用您选择的格式从设置文件读取。假设你称之为secrets.txt。然后,您可以将secrets.txt添加到您的.gitignore并承诺Upload.bat不受惩罚。当用户拉回购时,他们会得到Upload.bat,并可以创建自己的secrets.txt

您可能会让secrets.txt只有用换行符分隔的用户名和密码。以这种方式解析应该是微不足道的。

+0

我不确定我们正在寻找一些复杂的东西,但是这样可以解决我们在3个回购(Dev,UAT,Prod)中有不同Upload.bat的问题,并且节省了编辑每个这些文件的时间你在这个环境中工作的时间。 – GRobb

2

如果每个人都要重命名文件,可以将Upload.bat *添加到.gitignore文件中,然后git不应使用该命名方案跟踪任何新文件。更多关于gitignore的信息

+0

这是假设,当他们重新命名它,他们将其重命名为Upload.bat_myname或者一些附加Upload.bat – DeveloperDemetri

+0

他们正在编辑的文件的实际内容,然后将文件被重命名为“Upload.bat” 理想情况下,我只是有git中的“Upload.bat”,它被拉下来然后编辑但从未推回 – GRobb

+0

如果要拉的通用文件是Upload.bat_COPY_EDIT_RENAME,那么只需将'Upload.bat'(无通配符) .gitignore(假设git还没有跟踪确切的文件名),它应该忽略重命名为'Upload.bat'的文件,同时保留Upload.bat_COPY_EDIT_RENAME。在提交包含它的任何提交之前,一定要确保Git正确地忽略了该文件。 – DeveloperDemetri

1

据我所知,git没有永久性设置来拉,但从不推送文件。

您可以通过将模板文件存储在git中(如您已经这样做),并让您的构建脚本(you do have one, right?)检查自定义文件来获得更可靠的解决方法。如果定制文件存在,那么很好,继续进行构建。如果它不存在,请提示开发人员提供他们的凭据并进行设置。然后继续构建。该文件的自定义版本当然是在.gitignore中。

这实际上就是你现在拥有的东西,但是通过添加构建脚本来为开发人员提供提醒,而不是依靠那些健忘,​​忘却的人来希望注意并理解文件系统中某个有趣的命名文件。

作为让脚本处理创建自定义文件的附加好处,它可以在模板更改时自动更新它。

根据凭据,您可能需要仔细检查以确保在运行构建脚本时不会将它们记录到任何日志中。这包括将输出传输到文件。

1

一种不需要您将Upload.bat添加到gitignore的方法是使用批处理文件include。

您可以添加一个名为credentials.txt.dist到存储库文件,内容如下:

username=username_here 
password=password_here 

,然后在您的批处理文件:

for /f "delims=" %%x in (credentials.txt) do (set "%%x") 

Batch file include external file for variables

无耻取出并未经测试:)

The批处理脚本应该可能会做一些错误检查。如果没有提供credentials.txt,至少应该产生描述性错误信息。