Articles of git

如何使用git或其他VCS在应用程序运行时更改版本控制服务器configuration文件?

我正在运行一个Minecraft服务器(craftbukkit),我还有其他几个想要访问修改服务器configuration文件的pipe理员。 跟踪他们所有的变化是非常重要的,所以git自然是一个不错的select。 请注意,这个问题可能涉及很多情况, 这不是特定的Minecraft。 有几个使用git来pipe理网站的教程。 最常见的解决scheme似乎是使用post-receive钩子对web目录执行结帐操作。 但是,在我的情况下,这提出了一些问题。 首先,需要编辑的某些文件pipe理员在运行时被服务器更改 。 我假设这会混淆git,如果我把服务器目录本身进入存储库。 使用post-receive checkout解决scheme,如果我是正确的(我还在学习git),那么这个问题就不会那么成问题了。 我还需要将服务器所做的更改推送到回购站中,以便pipe理员可以将这些更改提取到本地回购站。 我已经看到使用inotifywait的解决scheme,但这些似乎只是为了解决单个文件的变化。 我的服务器有50-80个configuration文件,当服务器运行时更​​改它们时,我需要跟踪和自动提交。 什么是处理这个最好的方法? 请注意,使用git不是必需的。 我只是喜欢我迄今为止所使用的。 如果有更好的工具可以使用,只要用户友好就可以使用。 请注意,我的服务器pipe理员不是编码员,也不是Linux高级用户,因此用户友好性有所帮助。 我最初发布在StackOverflow上,但被告知它更适合在这里。

configurationJenkins运行BitBucket

我试图在我的Mac mini上设置Jenkins,以便从BitBucket中提取我的iOS项目源代码并自动构build它。 我已经经历了很多知道生成ssh密钥的问题,将它们上传到BitBucket,通过控制台执行ssh连接,将主机添加到众所周知的列表中(您可以在这里和这里find我所有的冒险经历)。 现在,我的系统中有3个用户:A,B和Shared。 当我安装Jenkins时,它自动将自己置于Shared中,但是我用用户A生成了ssh密钥。所以我们只需要清楚在A主目录中有一个带公钥和私钥的.ssh目录。 当我试图由Jenkins工作时,我得到这个错误信息: Started by user anonymous Building in workspace /Users/Shared/Jenkins/Home/jobs/myprojectAdHocBuild/workspace Checkout:workspace / /Users/Shared/Jenkins/Home/jobs/myprojectAdHocBuild/workspace – hudson.remoting.LocalChannel@625cb0bb Using strategy: Default Cloning the remote Git repository Cloning repository [email protected]:myuser/myproject.git git –version git version 1.8.0 ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:myuser/myproject.git hudson.plugins.git.GitException: Could not clone [email protected]:myuser/myproject.git at hudson.plugins.git.GitAPI.clone(GitAPI.java:271) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1036) […]

通过PAMvalidationGit虚拟用户

Git能否通过PAMauthentication虚拟用户? 特别是,Git是否需要一些额外的function,比如gitolite或gitosis ?

git aws.push返回错误403

我正在为“Elastic Beanstalk”上的应用程序获取git安装程序。 我一直在遵循亚马逊提供的说明。 推送更改后,我得到这个错误: git aws.push error: The requested URL returned error: 403 while accessing https://<Access Key Removed>:20130117T213945Z538f1c7baf8c89b4b547cb6717aabbaa7dfab3c52e0911d71e17b06765b922b2@git.elasticbeanstalk.us-east-1.amazonaws.com/v1/repos/54696d73546573744170706c69636174696f6e/commitid/62323130316462646264373436303536343265633861333035633133633265666466393633303133/environment/54696d7374657374656e7669726f6e6d656e74/info/refs?service=git-receive-pack fatal: HTTP request failed 这是我的.config文件: git config -l credential.helper=osxkeychain user.name=Tim xxxxxxxxxx [email protected] core.bare=false core.repositoryformatversion=0 core.filemode=true core.logallrefupdates=true core.ignorecase=true aws.endpoint.us-east-1=git.elasticbeanstalk.us-east-1.amazonaws.com aws.endpoint.ap-northeast-1=git.elasticbeanstalk.ap-northeast-1.amazonaws.com aws.endpoint.eu-west-1=git.elasticbeanstalk.eu-west-1.amazonaws.com aws.endpoint.us-west-1=git.elasticbeanstalk.us-west-1.amazonaws.com aws.endpoint.us-west-2=git.elasticbeanstalk.us-west-2.amazonaws.com aws.endpoint.ap-southeast-1=git.elasticbeanstalk.ap-southeast-1.amazonaws.com aws.endpoint.ap-southeast-2=git.elasticbeanstalk.ap-southeast-2.amazonaws.com aws.endpoint.sa-east-1=git.elasticbeanstalk.sa-east-1.amazonaws.com alias.aws.elasticbeanstalk.remote=!.git/AWSDevTools/aws.elasticbeanstalk.push –remote-url alias.aws.elasticbeanstalk.push=!.git/AWSDevTools/aws.elasticbeanstalk.push alias.aws.elasticbeanstalk.config=!.git/AWSDevTools/aws.elasticbeanstalk.config alias.aws.push=!git aws.elasticbeanstalk.push alias.aws.config=!git aws.elasticbeanstalk.config 我真的不知道还有什么要检查或做什么,让我知道如果我可以提供更多的信息。

在OS X客户端上写Linux Samba共享的问题

我们的网站开发公司有一个Linux服务器和一个Samba共享,员工用来开发网站。 在Samba共享上有许多目录作为web服务器的文档根(共享文件夹client / website.domain匹配http://some.website.local/ )。 每个项目都有Git或Subversionpipe理的存储库。 Windows和Mac客户端连接到Samba共享。 Windows机器在共享上没有问题。 Mac客户端,但是,有。 自从我们最近切换到Git,我开始注意到错误的模式。 有时,在Subversion中进行提交或更新时,SVN客户端会窒息并呈现相当模糊的错误。 工作副本将被locking,再次使用该工作副本的唯一方法是卸载并重新安装它。 只有这样我们才能运行svn清理工作,并使工作副本可以再次运行。 Git现在也发生同样的事情。 有时候,当有人拉动时,所有的文件都会被更新,但索引文件不能被写入。 因此,Git客户端认为从远程仓库中取得的更改实际上是由用户进行的未更改的更改,因为索引文件没有更新,所以认为它仍然反映了旧版本的仓库。 所以,SVN和Git都使用元数据(存储在.svn和.git中的文件)。 这些文件通常以某种方式被locking。 它从来没有发生与正常的文件。 我们已经在Linux机器上的smb.conf文件中尝试了许多关于oplocks和其他相关设置的设置,但仍然无济于事。 这是开始在这里开了我们一个小黑客。 有没有人有类似的经历? 到目前为止,我疯狂search,但没有发现任何东西。

GIT与subgit和Apache的SVN

我已经开始评估一个名为subgit的软件,它可以无缝地与SVN或GIT进行回购。 在我们的整个组织中,我们使用apache来接口我们的回购,并试图将其与GIT结合起来变得有些麻烦。 总体而言,我们希望允许读取访问而不进行身份validation,并且写入应该通过身份validation,这与SVN正常工作,但似乎不像GIT那样简单。 除此之外,使用apache来识别是否是GIT / SVN请求,并找出客户端的位置,这样就可以使用相同的URL,而不pipe您使用的是什么回购系统。 下面是configuration,现在我们已经有适当的读访问没有身份validation的SVN和写访问与身份validation,但对于GIT它是R / W没有身份validation。 <VirtualHost *:80> DocumentRoot /home/subgit/public_html CustomLog /home/subgit/logs/access_log combined SetEnv GIT_PROJECT_ROOT /home/subgit/repos/repo/ SetEnv GIT_HTTP_EXPORT_ALL SetEnv REMOTE_USER $REDIRECT_REMOTE_USER ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ <LocationMatch "^/git/.*/git-receive-pack$"> Options +ExecCGI AuthType Basic AuthName "subgit" AuthBasicProvider file AuthUserFile /home/subgit/etc/subgit Require valid-user Allow From All </LocationMatch> <LocationMatch "/svn"> DAV svn SvnPath /home/subgit/repos/repo AuthType Basic AuthName "subgit" […]

Gitolite3推送和selinux访问失败

我尝试用ssh和http安装gitolite3。 我主要关注了gitolite3的官方指南 ,但是我仍然徘徊在剩下的三个问题上。 当我$ git clone http://florian@server/git/testing ,这正确地创build回购。 我添加并提交一个新的文本文件,然后$ git push http://florian@server/git/testing 。 那么,这只是给了我一个信息: Everything up-to-date 这很奇怪 我$ rm -rf testing ,再次克隆回购,我的文本文件不存在。 看来阅读很好,但是写作在某处丢失了。 在/ etc / httpd / logs / suexec.log,error_log,access_log中都没有任何可疑,它们都表示成功的用户身份validation和连接。 此外,用于testing的./gitolite-admin/conf/gitolite.conf的内容是: repo testing RW+ = @all RW+ = daemon 虽然gitolite3的官方指南没有提及添加W +的testing回购。 我有点傻眼,我应该在哪里推进http工作? 为了达到这个目的,我必须echo 0 > /selinux/enforce (禁用selinux),我想再次重新启用它。 重新启用后,每次我尝试上面的$ git clone http://florian@server/git/testing ,httpd error_log有以下几行,而且命令本身失败(当然): [Sun […]

在Apache上集成Kerberos身份validation和Git服务器

第一次在这里问一个问题,所以我希望我是在正确的地方这样做。 我也在这里search类似的问题,但找不到类似的东西。 这是我的问题。 我们目前有一个git服务器(使用Gitorious),目前运行良好。 我被要求通过使用Kerberos进行身份validation来为Web界面添加一个额外的安全层。 所以我继续configurationApache,以便在用户尝试访问Web界面时使用mod_auth_kerb提示用户进行身份validation。 就networking界面而言,一切都很好。 然而,当试图从命令行拉/推任何东西,它会失败可怕。 这里是相关的信息: 在我的apacheconfiguration中,我尝试了以下两种方法,都产生了相同的结果: <Directory /home/git/active/> AuthName "Restricted Access Kerberos" AuthType Kerberos Krb5Keytab /etc/httpd/conf/httpd.keytab KrbAuthRealms TEST.COMPANY.COM KrbMethodNegotiate On KrbMethodK5Passwd On require valid-user </Directory> <Location /> AuthName "Restricted Access Kerberos" AuthType Kerberos Krb5Keytab /etc/httpd/conf/httpd.keytab KrbAuthRealms TEST.COMPANY.COM KrbMethodNegotiate On KrbMethodK5Passwd On require valid-user </Location> 以下是在尝试从命令行拉出时出现的内容: == Gitorious: ========================================================== Access denied or […]

git:用http后端创build新的远程回购?

我设置了通过apache2和git–http-backend访问git,如http://www.tikalk.com/alm/setup-git-gitweb-git-http-backend-smart-http-ubuntu-1204中所述 。 我可以从远程已经存在的testing仓库中取出。 然而,我很难推送一个本地创build到远程服务器的资源库,以便在那里build立一个新的资源库。 我是一个初学者,所以我可能会错过一些明显的东西。 我创build一个像这样的testing库: mkdir test2 cd test2 git init . echo blah > foo.txt git add . git commit -m'initial commit' 我试试这个: git push http://myserver/git/test2.git fatal: repository 'http://myserver/git/test2.git/' not found 或这个: git push –set-upstream http://myserver/git/test2.git master fatal: repository 'http://myserver/git/test2.git/' not found 任何提示?

cgit + redmine + git(提前整合)

我已经成功设法configuration我的Redmine与先进的git集成。 不过,我非常感兴趣的是将cgit与当前的configuration结合起来,但我不知道如何。 所以,基本上我想通过结合这两个configuration来使用Redmine的authenticationcgit。 这里是我的工作configuration(只有当我禁用其中一个)将工作: cgitconfiguration : <VirtualHost *:80> ServerName git.domain DocumentRoot "/var/www/htdocs/cgit/" DirectoryIndex cgit.cgi SetEnv CGIT_CONFIG /etc/cgitrc <Directory "/var/www/htdocs/cgit"> Options FollowSymlinks ExecCGI Allow from all AllowOverride all Order allow,deny <Files cgit.cgi> SetHandler cgi-script </Files> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.* /cgit.cgi/$0 [L,PT] </Directory> <Directory "/opt/git"> Allow from all </Directory> </VirtualHost> 通过Redmine进行Git身份validation […]