忽略Git

时间:2015-08-17 08:03:24

标签: git

我有一个文件database.properties,其中有

        password = something

因此,每当我必须测试某些内容时,我必须将此行更改为本地密码。团队中的每个人都有自己的本地密码。

我想我必须做以下其中一项:

  1. 每次我提交时都不应该添加database.properties 索引(我不想ignore这个文件),但也有 很多文件很容易错过这个文件。

  2. 在提交之前撤消更改,但大部分时间我忘了 这样做。

  3. 创建个人资料可能是实现此目的的一种方式,但即使出现与database.properties类似的问题。

  4. 我已查看Can git ignore a specific line?How to tell git to ignore individual lines, i.e. gitignore for specific lines of code

    temporarily ignoring files我知道我们可以做到

    git update-index --assume-unchanged <file>
    

    但我每次都必须这样做。

    上述所有参考文献都是在3 - 4年之前被提出/写过的。所以我只想知道如果有更好的方法可以忽略这一行。

    修改

    按照@ VonC的回答,我尝试在.git/info/.gitattribute中添加过滤器

    {directory_path}/database.properties filter=password // I have given the correct directory path.
    

    我添加了smudgeclean脚本:

    git config --global filter.password.smudge ~/smudge.sh 
    git config --global filter.password.clean ~/clean.sh 
    

    (当我运行~/smudge.sh~/clean.sh时,它会正确替换password= something行。所以脚本是正确的。)

    但是当我添加/提交database.properties时,似乎对database.properties文件没有任何影响。 (我猜测~/clean.sh应该在我将其添加到索引时运行)

    我做错了什么?

2 个答案:

答案 0 :(得分:1)

我支持2014年的回答#34; Can git ignore a specific line?&#34;:使用git内容过滤器来更改另一个内容的文件行。

它仍然需要(一次)git config命令才能在您的仓库中声明该过滤器,但它将保持活动状态(与git update-index, which can be discarded on, for instance, a git reset相反)

过滤器与.gitattributes文件中的文件相关联,与database.properties放在同一文件夹中。 (see discussion
它与要在repo的本地配置中执行的程序相关联。

答案 1 :(得分:1)

一种可行的方法是将<?php $uname=$_POST['txtuname']; $pwd2=$_POST['txtpwd2']; $con=mysql_connect("localhost","root","") or die(mysql_error()); mysql_select_db("onlineshop",$con); $r=mysql_query("select password from users where username='$uname'",$con); $row = mysql_fetch_row($r); $val=$row[0]; if($val!="") { if($pwd2==$val) { session_start(); $_SESSION['username']=$uname; header("location:index.php"); } else { $msg="Invalid UN/PW"; } } ?> 复制到database.properties并编辑后者以用占位符替换密码。将database.properties.in(但不是database.properties)添加到您的database.properties.in文件中。

接下来,您需要编写一个小脚本来将.gitignore复制到database.properties.in并填写正确的密码。此脚本可以是构建基础结构的一部分(在database.properties更改后运行),也可以将其设置为提交后hook