相关疑难解决方法(0)

如何将 clang 格式添加到预提交挂钩?

我是提交钩子和 Clang 格式的新手,我正在尝试将两者结合起来。我设置了预提交挂钩,并且知道如何在命令行上运行 Clang 格式,但不确定如何将其添加到文件中。

这是我在命令行中运行的用于格式化的代码: clang-format -i -style=llvm fileName

我也试图在所有提交提交的文件上运行它。 git diff --cached --name-only

这是我的pre-commit文件:

hook_enabled=true

# Redirect output to stderr.
exec 1>&2

# If the hook is enabled and there are one or more files added to the commit run
# code formatting.
if [ "$hook_enabled" != "false" ] &&
    test $(git diff --cached --name-only $against | wc -c) != 0
then
    cat <<\EOF
  Code formatting changed some files, please review and re-add files with git …
Run Code Online (Sandbox Code Playgroud)

git clang pre-commit-hook githooks

8
推荐指数
3
解决办法
1万
查看次数

将子模块中的文件设置为只读

我是一个患有先前svn经验的git新手.我的很多项目都使用自己库中的代码,所以很自然地我想从git中获得一些"类似于外部"的功能.我目前正在尝试使用子模块.

但是如果以错误的方式使用子模块(据我所知),子模块可能会带来很大的痛苦(例如,更改子模块中的文件并忘记推送它们,或者忘记提交它们).

如果我将子模块中的所有文件设为只读怎么办?这足以防止意外更改.如果我真的想改变一些东西,我应该去改变原来的回购.

所以,我的问题是:

  1. 这是一个好主意还是我想重新发明轮子?
  2. 最简单的方法是什么?

编辑:我希望可以通过git hook实现,但我不确定如何.我第一次克隆回购时不能使用客户端挂钩,是吗?

EDIT2:在SRobertz的帮助下,我能够拿出一个结账后的钩子:

echo "you just checked out: $*"  
echo "submodules:"
for p in `grep path .gitmodules | sed 's/.*= //'`; do # get submodules list
    echo "making submodule directory $p read-only"
    chmod -R a-w $p;
    SAVEIFS=$IFS
    IFS=$(echo -en "\n\b") #set delimeter to \n\b to handle whitespaces in filenames
    for f in `ls $p`; do #get files in submodule dir
         echo "making file $f in directory $p read-only"
         chmod -R a-w $p\\$f;
    done
    IFS=$SAVEIFS …
Run Code Online (Sandbox Code Playgroud)

git git-submodules

6
推荐指数
1
解决办法
2895
查看次数

在 .git/hooks/pre-commit 中共享代码的好方法

有没有什么好方法可以分享代码 .git/hooks?

我唯一能想到的是创建命令行工具,并从每个脚本中调用这些工具 .git/hooks/*

git githooks

6
推荐指数
2
解决办法
2910
查看次数

当 bitbucket-pipelines.yml 更新时,防止 bitbucket pipline 触发

我是 bitbuckt 管道的新手。对于我bitbucket-pipelines.yml在管道中添加的节点项目,我有一个构建容器并将其推送到 ECR 的步骤以及另一个部署步骤。

\n

现在,每次我对 bitbucket-pipelines.yml 进行更改时,它都会构建一个新映像并将其推送到 ECR 并进行部署。

\n

当我对 bitbucket-pipelines.yml 进行更改时,我不知道要触发什么管道。我只希望在对应用程序进行更改时触发管道。我是否设置了错误的项目?

\n

我的项目结构。

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bitbucket-pipelines.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package-lock.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 README.md\n
Run Code Online (Sandbox Code Playgroud)\n

bitbucket bitbucket-pipelines

5
推荐指数
1
解决办法
8020
查看次数

将 git hook 提交到 repo

我在配置 tslint 和预提交挂钩时遇到问题。重点是我创建了 tsconfig 文件,它工作得很好。并添加了 bash 脚本,如果 tslint 返回任何错误,则不允许我提交。问题是我需要为团队中的其他人提交这个挂钩文件。这应该会自动替换 .git 文件夹中的预提交挂钩。我刚刚找到了一个 bash 脚本,它检查“hooks”文件夹中的钩子并将其替换到 .git 文件夹中。我如何提交并为我的团队“自动”执行此操作?

git bash hook pre-commit

3
推荐指数
1
解决办法
2262
查看次数

使用Git管理框架,在第一次拉取后忽略对给定文件的更改

我正在使用git来管理扩展的CodeIgniter框架.它是当前CI版本的克隆版,其中包含额外的帮助程序,库等.

我有很多网站都使用这个框架,如果我添加一个新的帮助方法或修复一个网站中的错误,我希望能够轻松更新所有其他网站,而不会覆盖任何自定义文件.

我希望实现以下工作流程

  1. 创建一个新的站点目录git init以初始化一个空白的本地git仓库
  2. 将其与远程框架仓库链接 git remote add origin git@github.com:username/framework_repo
  3. 拉出远程框架的新副本 git pull origin master
  4. 对站点文件进行更改并将其提交回远程仓库 git push origin master
  5. 将这些更改下拉到其他站点
  6. 重复步骤4和5

多数民众赞成,但是:

  • 像config.php和database.php这样的文件永远不应该提交回远程仓库,因为它们对每个站点都是唯一的.
  • 但是我希望它们存在于远程仓库中,因此在第一个pull请求中,默认文件将下载到我的本地目录.
  • 此外,如果我从远程仓库执行另一次更新以更新框架,我不希望覆盖这些文件

什么是实现这一目标的最佳方式?一些.gitignore伏都教?我已经使用.gitignore来忽略文件,但是在这种情况下它略有不同,因为我只想在第一次请求时提取文件.

我希望这是有道理的.

git gitignore

2
推荐指数
1
解决办法
1221
查看次数