我刚刚有一个关于git的快速问题 - 如何向后兼容是git存储库?例如,我使用git 1.6.4和svn2git ruby脚本创建了一个存储库,但我想把它放在运行Debian Lenny的机器上,它有git 1.5.6.5.我还能够正确地与存储库进行交互吗?
我正在尝试设置一个git post-receive钩子,这样当收到提交时,机器上另一个存储库的克隆会更新(即确实如此git pull origin master).我正在使用gitosis来服务于存储库,因此我相信post-receive hook将作为gitosis用户运行,而我想要在receive上更新的存储库是由www-data.我应该怎么做呢?
我听说过setuid脚本,但我不确定这是否会带来安全风险?如果这不是安全风险,我将如何做到这一点?我猜我会做一些像脚本所拥有的东西www-data,让它成为世界可执行的并启用setuid位?我想这个脚本几乎无害,因为它只是更新存储库,但我想确定.谢谢!
编辑:有没有办法使用sudo?这比那更安全setuid吗?我的意思是,我不认为setuid如果用户不是root用户会有很多问题,但是看起来好像我必须跳过一些箍setuid才能运行脚本.
第二次编辑:似乎我可以通过一些/etc/sudoers魔术来做到这一点sudo -u.也许我应该在ServerFault上发布这个,但至少我从这一努力中学到了一些东西.
所以我使用svn2git将SVN存储库转换为git存储库,因为我假设在svn存储库上不再有任何工作.然而,其他人不知道我们正在切换到git(它有点复杂,但他基本上只是在处理一个特定的文件)所以他做了一些提交给SVN.现在我想把这些提交变成git.我还能这样做,还是svn2git完全单向?
如果没有,有没有办法从SVN提交生成补丁,类似于git format-patch?我似乎无法从粗略的搜索中找到一个; 似乎SVN开发人员从未想过你会想要将提交转换为补丁.
我正试图在服务器上设置gitosis.我只是想知道一件事,我的ssh密钥最后有我的gmail地址,因为我最初使用它为github.对于我正在设置的服务器上的这个新项目,我想在提交git时使用我的电子邮件地址.在gitosis中设置它时,我可以使用相同的ssh密钥,还是需要在我的帐户上使用不同的ssh密钥me@newserver?
我正在开发一个目前在svn中跟踪的网站项目,但是一旦其他人有时间设置新的服务器和东西,它将转移到git.这是一个很长的故事,但与此同时,我已经从我的一些代码中创建了自己的git存储库,并对它进行了相当多的工作.我没有使用git svn clone,因为我在海外,我的互联网连接很奇怪,需要HTTP代理,而且似乎没有让git svn通过.在任何情况下,我一直在我自己的git存储库中开发,但最终一旦项目实际上正确导入,我将需要将我的工作重新定义为git-svn克隆的东西.会git rebase为此正常工作吗?
一个复杂的问题是,我实际上是在虚拟机中工作,对于许多提交,我没有意识到我没有设置user.name和user.email配置条目,所以提交来自vm的本地用户,这是一种很奇怪 将所有更改收集到diff文件中然后在创建新分支时将它们应用到新分支上会更好吗?
另一个复杂因素是之前使用的SVN有点半心半意,因此生产服务器上实际上没有提交我未提及的更改.实际上,我首先对代码进行了较旧的修订,甚至不是SVN头,所以我遗漏了一些东西.什么是最好的方法?
最后一个问题是,如果我通过导入SVN存储库git svn(我刚刚检查过它似乎现在正在工作)但是我没有添加一个authors文件,我以后能否将我的更改重新绑定到正确导入的分支上有作者文件?
哦,一个新的复杂功能.我自己导入了SVN存储库git svn,这是一个艰苦的过程,在这个缓慢的连接上花费了两天的大部分时间.然而,在最终完成克隆之后,我意识到在SVN存储库中代码都在子目录中,但在我的git存储库中,存储库的根也是目录的根.如果这有点令人困惑,那基本上就是这样
SVN:
\dir\codez
混帐:
\codez
我如何组合这两个存储库?我希望我仍然可以使用rebase,但这似乎是一个非常奇怪的情况.它听起来类似于子模块,但我认为这不是我需要的.