【问题标题】:Git Post-Receive Hook is Inconsistently Adding ChangesGit Post-Receive Hook 不一致地添加更改
【发布时间】:2012-07-03 19:14:32
【问题描述】:

我正在尝试编写一个接收后挂钩,它将拉入推送到 bitbucket 帐户的所有新分支。然后,如果推送这些更改的人是特定开发站点的指定用户,则应自动签出分支。

这是代码:

$payload = stripslashes(($_POST['payload']) ? $_POST['payload'] : $_GET['payload']);
$obj = json_decode($payload);

$commits = $obj->commits;
$head_commit = $commits[0];

for ($i=0; $i<sizeof($commits); $i++) {
    $commit = $commits[$i];
    $head_date = strtotime($head_commit->timestamp);
    $comm_date = strtotime($commit->timestamp);

    if ($comm_date > $head_date) {
        $head_commit = $commit;
    }
}

$branch = $head_commit->branch;
$author = $head_commit->raw_author;

$msgs = array();                                
$ini = parse_ini_file('pull_settings.ini',true);
define ("CURRENT_SITE",$_SERVER["SERVER_NAME"]);

foreach ($ini as $server) {
    if (CURRENT_SITE==$server["site_name"]) {
        if ($server["type"]=="master") {
            $users = $server["users"];
            if (in_array($author,$users) && $branch == "master") {
                exec("git pull",$msgs);
            } else $users = array();
        }
        if ($server["type"]=="dev") {
            exec("git stash",$msgs);
            exec("git fetch --all",$msgs);
            $users = $server["users"];
            if (in_array($author,$users)) {
                exec("git checkout -f $branch",$msgs);
                exec("git merge origin/$branch",$msgs);
            } else $users = array();
        }
    }
}

问题是这样的:

它并不总是有效!有时即使应该签出分支,它也不会签出。此外,有时它在签出新分支时会留下文件。这导致 git 说一大堆文件被修改了,这些文件不在它所在的分支中。

请帮忙!非常卡住。

谢谢

【问题讨论】:

    标签: php git branch githooks git-post-receive


    【解决方案1】:

    git stash 将保存对跟踪文件所做的修改。如果您有新文件,它们将不会被保存。这不可能是你的问题之一吗?您有新的未跟踪文件,然后您的 git 合并将添加这些文件。

    【讨论】:

    • 新文件不会停止合并,但我不认为?该过程实际上在脚本中途停止
    • 如果新文件在本地存储库中未跟踪,则可能会出现问题,并且您尝试合并远程存储库添加具有相同名称的跟踪文件。它会在乞讨时停止合并。
    猜你喜欢
    • 2015-03-22
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多