Articles of git

在子模块更新时自动更新Git超级存储库

在我们公司,我们有一个庞大的代码库(> 100000个文件),所以我们把它保存在几个git仓库中。 所以我们有一个仓库的森林和一个只包含子模块引用的超级仓库。 这个想法是把超级仓库当成一个便利的粘合剂,并在开发人员更新任何子模块时自动更新。 我已经试验了接收后的钩子,结束了以下实现: (它涉及到git plumbing,以便能够直接修改裸仓库) #!/bin/bash -e UPDATED_BRANCHES="^(master|develop)$" UPDATED_REPOS="^submodules/.+$" # determine what branch gets modified read REV_OLD REV_NEW FULL_REF BRANCH=${FULL_REF##refs/heads/} if [[ "${BRANCH}" =~ ${UPDATED_BRANCHES} ]] && [[ "${GL_REPO}" =~ ${UPDATED_REPOS} ]]; then # determine the name of the branch in the super repository SUPERBRANCH=$FULL_REF SUBMODULE_NAME=${GL_REPO##submodules/} # clean the submodule repo related environment […]

使用Git在本地和远程服务器之间“同步”文件

我的目标是 : 我在本地计算机上维护了一些文件,并将其与他人分享到我的网站上。 在过去,我通过使用FTP手动上传所有文件来做到这一点,每次我做了一些修改等。现在,我想知道如果我可以使用Git来帮助我实现这一点(通过“推”本地文件到我的网站服务器)。 我的服务器由Dreamhost托pipe。 第一次尝试 : 首先,我尝试这个教程 。 我首先推我的本地文件到我的Github git clone –bare ,然后ssh到我的Dreamhost服务器,从github git clone –bare 。 但是我发现git不会传输我的文件。 所以我忽略了这个教程。 第二次尝试 : 我ssh到我的Dreamhost服务器直接从Github克隆。 我的文件全部转移到服务器。 然后,在我的本地计算机上,我git remote add dreamhost ssh://[email protected]/~/my-project 。 然后我添加一些文件,并提交,和git push dreamhost master 。 并出现一堆错误: 错误http://geotakucovi.com/gitError.jpg 作为一个新手Git用户,我一定错过了一些东西。 请帮忙!

Git / LDAP帐户/ Gitolite

我对LDAP是什么以及它是如何工作的知之甚less,除了知道我可以使用我的LDAP帐户用户名/密码login到多个linux服务器。 现在我们正在使用mercurial进行版本控制,但是我正在研究如何转换为git。 现在我的第一个问题,我很确定我知道答案,但只是想validation(我认为答案是肯定的),但由于git可以使用ssh连接到存储库,只要LDAP帐户有权访问服务器git存储库托pipe,我可以假设LDAP帐户将像一个普通的SSH帐户,并连接到git存储库工作,正确的? 第二个问题我不太确定,如果LDAP可以挂钩gitolite,那么我可以获得gitolite提供的访问控制function。 为了得到gitolite提供的访问控制,我个人很喜欢抓取LDAPauthentication,尽pipe我不确定我的老板是谁。

使用nginx和Drupal,如何为存在的静态文件和目录提供404错误?

我使用git部署了一个Drupal网站(好吧,开发人员部署它,我试图避免麻烦),因此网站在文档根目录.git有一个目录.git和一个文件.gitignore 。 目前对文件的权限足以导致nginx返回一个403 Forbidden错误,如果这些文件在Web浏览器中被访问。 但是,我想nginx完全否认这个文件和目录的存在,如果有人试图在浏览器中访问它们,则返回404。 但是等等,还有更多! 我真正想要发生的事情是浏览器接收由Drupal生成的404错误页面。 在Drupal的admin/settings/error-reporting页面中,我看到404错误正在发送到http://www.example.com/ 404error ,这是一个Drupal节点,其中包含一个更有趣的404页面。 我的nginxconfiguration中已经包含了一个将请求传递给Drupal的@drupal块。 所以我想将请求传递给Drupal,但是我不希望Drupal尝试为现有的静态文件提供服务,而是仅仅为404页面服务。 location @drupal { rewrite ^/(.+)$ /index.php?q=$1 last; } 不幸的是,Google在这里并没有太大的帮助。 大多数人似乎有相反的问题。 如何让.git目录或.gitignore文件中的任何内容发送到Drupal的404页面?

错误403当git推(多个github帐户在同一个mac)

我在同一台Mac上有两个GitHub帐户。 并已安装凭证-osxkeychain。 它与我的第一个GitHub帐户正常工作。 但是,如何将第二个帐户添加到钥匙串访问? 如果这是不可能的,我怎样才能注销我的第一个帐户? PS我不能在我的networking上使用SSH密钥。 PS我已经在第二个git config user.email设置了git config user.name & git config user.email 。 当我git push时出现错误403。 Github没有要求我input第二个帐户的密码。 我认为git是用错误的帐户和密码推回购买。

pipe理修补程序到configuration文件

我使用一个configurationpipe理系统,而且我相信这是很常见的,我的CM软件只是简单地复制粘贴configuration文件,将它们部署到我的Linux服务器上,一味的瞎折腾。 但是大部分情况下,我的configuration文件应该只是简单的修改或调整底层Linux发行版提供的“基本”configuration文件。 每当“基础”configuration文件改变 – 也许操作系统包pipe理器想要推出更安全的默认更新的configuration文件,也许我们正在一些新的主机上安装新版本的Ubuntu – 我们必须通过configuration文件validation他们没有改变,或者我们不是想要保留/更新我们的模板,如果是的话,在新版本之上“重新应用”我们的改变。 用git的话来说:这就好像把你自己的改变重新定位到一个转变的上游主人。 简单的patch可以使我们获得一些距离,但它不会追踪上游变化和我们变化之间共享的共同祖先,所以它没有强大的重新组合逻辑,AFAICT,以及更多的噪声警告。 有没有用这种方式pipe理configuration文件的工具或CM软件?

Jenkins的权限允许post-receive挂钩,但阻止匿名用户

我试图禁用匿名访问我们的Jenkins安装,但仍允许Codebase Git执行post-receive钩子发布到Jenkins,以允许它触发构build。 我们使用基于Matrix的安全性,并且只允许匿名用户使用以下权限: 总体>阅读 工作>阅读 工作>build立 这些都是我必须激活,以便获得Codebase发布的URL,否则我从Jenkins获得访问被拒绝的错误,问题是,它允许匿名用户浏览我们的项目? 有没有办法来掩盖这一点? 我认为jenkins需要“ 整体”>“读取”访问权限以允许“ 作业”>“构build”权限工作是非常愚蠢的。

专业的工作stream程通过Git部署?

我已经写了一套bash + crontab脚本,基本上让我拿一个新的linux服务器,并部署一个git仓库。 一切都好,但这是一个相当零碎的过程,我想知道是否有一些更专业/抛光的这种工作stream程的指针? 还是我错过了船? 有没有更好的低/无预算的方式部署服务器+应用程序云虚拟机的我应该看看? 编辑关于像Salt或Ansible这样的configurationpipe理工具,我试图避免走这条路,因为它(看起来)是一个多周的努力来学习这些工具,足以决定是否会满足我的需求。 我不是一个全职的开发人员,宁愿有尽可能less的运动部件。 虽然如果我在这个断言中错了,请让我知道!

jenkinsgithub拉请求build设者选错了提交

我正在使用插件的GitHub拉请求生成器jenkins。 然后,我build立了从GitHub的webhooks,当一个新的合并请求打开或提交时触发jenkins中的构build。 我用Jenkins DSLconfiguration了GHPRB插件: job("name") { properties { githubProjectUrl("https://github.com/org/${repo}") } scm { git { remote { name("origin") url("[email protected]:org/${repo}.git") credentials("jenkins-ssh-keyid") } branch("**") extensions { gitTagMessageExtension() } } } triggers { githubPullRequest{ admins(["github-username"]) orgWhitelist('org-name') cron("") triggerPhrase("build") extensions { commitStatus { context("unittest") } } useGitHubHooks() } } steps { shell("./run-unittests"); } } 我遇到的问题是Jenkins有时候会感到困惑,并select错误的提交方式来构build。 当发生这种情况时,jenkins输出如下所示: GitHub pull request #9 […]

自升级到Git客户端插件2.1.0以来,Jenkins无法读取Github密码

我目前在Windows 2012上使用Jenkins 1.650,并将Jenkins的testing实例(从我的生产服务器克隆)升级到2.25。 作为其中的一部分,Git客户端插件从1.19.6升级到2.1.0,现在无法进行身份validation。 如果我再次降级这个插件,我的工作就完美了,但是使用升级后的插件运行时,作业会失败。 所有的错误输出都是一样的: 08:18:40 Cloning the remote Git repository 08:18:40 Cloning repository https://github.com/mycompany/myrepo.git 08:18:40 > C:\Program Files\Git\cmd\git.exe init C:\Program Files (x86)\Jenkins\workspace\project # timeout=10 08:18:40 Fetching upstream changes from https://github.com/mycompany/myrepo.git 08:18:40 > C:\Program Files\Git\cmd\git.exe –version # timeout=10 08:18:40 using GIT_ASKPASS to set credentials 08:18:40 > C:\Program Files\Git\cmd\git.exe fetch –tags –progress https://github.com/mycompany/myrepo.git +refs/heads/*:refs/remotes/origin/* 08:18:41 […]