标签: git

git、nagios 和 hooks、损坏的 git repo

背景

我们正在使用 nagios 来监控我们的基础设施。我们目前没有版本控制下的 nagios 配置,我们有两个人管理 nagios 配置。因此,我正在努力将我们的 nagios 配置放入中央 git 存储库中,使用一些钩子进行语法检查,然后如果配置看起来不错,则使它们“处于活动状态”。我正在使用这个人的帖子作为起点。

我试图实现的一般工作流程是:

  1. 编辑 nagios 配置的本地 git repo。添加编辑过的文件,在本地提交。
  2. git push origin master 到远程仓库。
  3. Push 被 pre-receive hook 拦截,它获取文件,将它们移动到服务器上的临时目录,并通过 nagios 语法检查器运行它们。
  4. 如果语法检查器通过,则接受推送,然后使用 post-commit hookgit pull将新代码放入 live nagios 配置目录中,然后重新启动 nagios。
  5. 如果语法检查器失败,则拒绝推送,向用户显示 nagios 语法错误。

但是,当我由于 nagios 配置中的语法错误而拒绝 git push 时,我遇到了一个奇怪的行为。我期望发生的是,如果我拒绝钩子,则尝试推送应该使存储库保持原样,原样。不过,情况似乎并非如此。以下是我所看到的详细信息:

问题

我在本地编辑 nagios 配置,故意包含一个语法错误,添加,然后在本地提交:

host:nagios erik$ vi nagios.cfg
host:nagios erik$ git add nagios.cfg
host:nagios erik$ git commit -m "syntax error"
[master da71aed] syntax error
 1 files changed, 1 insertions(+), …
Run Code Online (Sandbox Code Playgroud)

git

13
推荐指数
1
解决办法
1370
查看次数

加密服务器上的 git 存储库(防止物理硬件被盗)

我有一个带有 git 存储库的生产服务器(Ubuntu,24/7 运行)和一些客户端计算机,每台计算机都有一个该存储库的工作副本。在客户端计算机上,简单地使用主文件夹加密似乎可以解决在硬件被盗的情况下没有人可以访问git中的文件的问题。

我如何加密 git 存储库的远程端以确保在硬件被盗的情况下没有人可以重新配置和克隆 git 存储库?

起初,我想加密git用户的主目录,但后来我意识到这没有任何意义,因为它应该在什么时候由谁解密?

我可以将 git 存储库放在我自己的主目录/链接中,以便只有在我通过 SSH 登录到服务器时才能使用它吗?或者有没有类似的解决方案来解决这个问题?

感谢您提前提供任何提示!

ubuntu encryption git

13
推荐指数
1
解决办法
4648
查看次数

debian:致命 -> 无法分叉

我生命中第一次遇到这样的事情:

root@peklan:~# aptitude install git-core
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
FATAL -> Failed to fork.   
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何摆脱这条消息吗?

debian git

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

Git:似乎在“(无分支)”中,然后丢失了我的更改

我试图从我的 Git 工作区推送到 Github,但我添加和提交的更改似乎没有上传。

然后,做一个“git branch”,我得到了这样的东西:

git branch
* (no branch)
  master
Run Code Online (Sandbox Code Playgroud)

愚蠢的,我以为我可以回到主人

git checkout master
Run Code Online (Sandbox Code Playgroud)

现在我的变化似乎已经消失了。我的主分支大约有一天大了。而且似乎没有办法切换回这个(没有分支)。

我的更改丢失了吗?或者有没有办法恢复它们?

git

12
推荐指数
2
解决办法
2万
查看次数

无法在 CentOS 6.0 x64 上安装 GIT

我正在尝试通过 RPM 或 YUM 安装 GIT,但我不能。我收到以下错误:

error: Failed dependencies:
        libcrypto.so.10 is needed by git-1.7.1-2.el6.i686
        libcurl.so.4 is needed by git-1.7.1-2.el6.i686
        libexpat.so.1 is needed by git-1.7.1-2.el6.i686
        libssl.so.10 is needed by git-1.7.1-2.el6.i686
        libz.so.1 is needed by git-1.7.1-2.el6.i686
        perl(Error) is needed by git-1.7.1-2.el6.i686
        perl(Git) is needed by git-1.7.1-2.el6.i686
        perl-Git = 1.7.1-2.el6 is needed by git-1.7.1-2.el6.i686
Run Code Online (Sandbox Code Playgroud)

运行时yum install git

root@server [/usr/local/src]# yum install git
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.symnds.com
 * extras: mirror.atlanticmetro.net
 * updates: mirror.trouble-free.net
Setting …
Run Code Online (Sandbox Code Playgroud)

centos git

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

非常大的 /etc/hosts.deny 会减慢 SSH 连接的速度吗?

我一直在使用拒绝主机一段时间,我注意到我/etc/hosts.deny的越来越大。Denyhosts 将 IP 添加到/etc/hosts.deny,并且我的 denyhosts 配置为从不清除 IP。

$ wc -l /etc/hosts.deny
22149 /etc/hosts.deny
Run Code Online (Sandbox Code Playgroud)

这可能会成为问题吗?我真的不明白 libwrap 是如何工作的。希望它正在散列这些条目或用于快速访问的内容,但我还没有查看该代码。

我遇到了一些奇怪的网络问题,我与 gitosis 服务器的 SSH 连接挂了(实际上,Symfony2 包的更新使用bin/vendors install)。我不确定如何调试它,所以我正在寻找盒子可能出错的地方,例如资源短缺。

这是在 Ubuntu 10.04.4 LTS 服务器上。

unix ssh git

12
推荐指数
1
解决办法
924
查看次数

使用 git 自动签署所有提交

使用 git 1.7.9,可以使用-S选项签署提交。是否可以通过 将其设置为默认值git config --global

所以,而不是git commit -S -m 'Commit message',它会只是git commit -m 'Commit message'.

git pgp

12
推荐指数
1
解决办法
6375
查看次数

如何在 RHEL 6 上安装 git?

我正在尝试在 RHEL6 开发服务器上安装 Git,我有使用 Ubuntu 的经验,但这是我第一次使用 RHEL(我是一名开发人员,试图填补最近离职的 Linux 系统管理员的职位)。

我已经为 Magento 安装所需的其他软件包设置了两个额外的存储库(EPEL 和 IUS)。yum repolist 的输出:

[root@box]# yum repolist
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
repo id              repo name                                        status
epel                 Extra Packages for Enterprise Linux 6 - x86_64   7,841
ius                  IUS for RHEL 6Server - x86_64                    135
Run Code Online (Sandbox Code Playgroud)

我读过的大部分内容都表明一个简单的“yum install git”应该在启用 EPEL 的情况下工作,但我感到害怕

[root@box]# yum install git
Loaded plugins: product-id, security, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
No package git available.
Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)

git-daemon …

git epel rhel6

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

如何让 GitLab 删除旧备份?

我使用 rake 任务为 GitLab 6.8.2 创建备份。

gitlab-rake gitlab:backup:create
Run Code Online (Sandbox Code Playgroud)

/etc/gitlab/gitlab.rb我添加了以下行:

gitlab_rails['backup_keep_time'] = 60
Run Code Online (Sandbox Code Playgroud)

这应该修剪超过 60 秒的备份。我的期望是,gitlab:backup:create如果 60 秒过去了,第二次运行将删除第一个备份。虽然输出中的最后一行是

删除旧备份...跳过

如何配置 GitLab 以实际删除旧备份?

backup git gitlab

12
推荐指数
2
解决办法
2万
查看次数

在声明式 Jenkins 管道中使用 GIT 变量

我正在努力访问我的 Jenkins 管道中的 GIT 变量

我需要知道在管道的某个阶段的某些 bash 代码中检查了哪个 GIT 分支。我将使用它来创建不同的输出文件名。我的管道是声明性的,而不是脚本化的,我使用的是 Jenkins 2.150.1

我尝试了所有可以在网上找到的东西,但大多是不完整的代码或脚本管道。或者干脆我不能把这些信息放在一起。

给我花多少时间,如果有一个使用声明性管道的完整工作示例会很好。

这是我到目前为止尝试过的:

#1

运行 git inside sh,但 Jenkins 检出提交,而不是分支,导致分离头

#2

从 shell 中查找环境变量,但没有设置与 GIT 相关的变量。这个片段

steps {
  sh 'echo $GIT_BRANCH'
}
Run Code Online (Sandbox Code Playgroud)

总是返回空。然后我尝试了 Groovy:

steps {
  echo "${env.GIT_BRANCH}"
}
Run Code Online (Sandbox Code Playgroud)

打印null

#3

在“全局变量参考”中有一段说:

SCM-specific variables such as GIT_COMMIT are not automatically defined as environment variables; rather you can use the return value of the checkout step.
Run Code Online (Sandbox Code Playgroud)

我在网上搜索了如何做到这一点,并将此代码放在一起:

pipeline {
  stages {
    stage('Build') {
      steps {
        def …
Run Code Online (Sandbox Code Playgroud)

git jenkins

12
推荐指数
2
解决办法
5万
查看次数

标签 统计

git ×10

backup ×1

centos ×1

debian ×1

encryption ×1

epel ×1

gitlab ×1

jenkins ×1

pgp ×1

rhel6 ×1

ssh ×1

ubuntu ×1

unix ×1