在OSX Client(Snow Leopard)上创建远程GIT服务器以与XCode 4本地GIT Repo同步

Ove*_*sty 8 git macos ssh xcode

对于那些想要在远程OSX Snow Leopard客户端盒上创建自己的git存储库的人,然后通过SSH从XCode 4.1同步它 - 继续阅读.

我已经设法让这个工作起来了,但我认为对于那些现在正在我所在的同一条船上拔毛的人来说,阅读我采取的步骤,以及任何比我更有经验的人,这可能会有所帮助.指出我可以做得更好的地方(也许包括任何有用的屏幕截图等).

我刚刚在备用的Snow Leopard MacMini上成功创建了一个工作的远程git存储库,并测试了它与XCode 4.1的同步,以及本地git repo(XCode的默认本地存储); 不幸的是,事实证明,为了实现这一目标,你必须要做得很多,但它确实有效!

初步:为了避免混淆git的新手,(据我所知)GIT是GIT ......这意味着,实际上没有特殊的服务器版本和客户端版本...在大多数情况下,安装XCode时在您的计算机上本地安装的GIT与在"服务器"上运行的几乎相同.唯一重要的区别是运行在顶部的支持软件/基础设施.

这是可选的单独层,服务器可以使用它来允许用户连接到底层的git系统,这使得git服务器(又名"远程")和git"客户端"之间存在很大差异.大家是否使用在Apache中运行的Web界面进行连接?他们是使用其他类型的用户界面中介(即Gitolite)运行,还是仅使用远程服务器上的实际OSX用户帐户直接通过SSH连接到git?如果您是git的新手并尝试设置自己的远程服务器,那么这是一个重要的问题:直接或中介访问.

本说明假设您只与少数已知用户合作,因此不需要额外的中介层,因此,我们将选择使用实际OSX帐户通过SSH直接访问.请注意 - 这不是关于与GitHub的同步,在其他地方有很多关于该主题的说明.

但在我们进一步讨论之前,您确定只想使用OSX客户端帐户而不是单独的用户中介层吗?(比如Gitolite/Gitosis等)...请记住,对于直接访问,将来需要访问服务器的每个用户都需要在System Prefs中创建一个实际的OSX客户端帐户 ...如果这不是一个麻烦,那么好,否则检查Gitolite,因为它从长远来看避免了这个问题(但在短期内增加了一层额外的设置 - > https://github.com/sitaramc/gitolite /).

第1节 - 设置OSX客户端GIT服务器.

我假设你没有在你的OSX git遥控盒上安装XCode,所以你必须下载并安装GIT,幸运的是,这部分很容易......

从实际的远程盒子,冲浪到http://git-scm.com/并获取git,打开磁盘映像,然后运行安装程序.

不要忘记还运行安装程序附带的"非终端程序设置git路径"shell脚本(它可能就在磁盘映像上的安装程序旁边)...遗憾的是它不是全面的魔术链接修复程序如果你正在做我们现在的事情,但它确实解决了安装帐户的一些麻烦.

创建用户帐户:由于我们不使用访问中介层,您将直接在远程OSX框的"系统偏好设置"中为将要使用此服务的所有用户创建用户帐户.

创建一个可以访问存储库的OSX用户组,并将这些用户添加到该组.

在远程控制台的系统偏好设置 - >共享中,启用"远程登录"(这 SSH),您还可以选择仅允许特定用户访问...(稍后将详细介绍此服务 - 因为它也必须更改)

使用您之前设置的个人帐户测试本地计算机的远程登录:

ssh yourname@remoteGitBox.com

如果您进入,或者如果您被提示创建一个rsa密钥,这意味着您已连接,很好 - 但只为您计划个人使用的帐户创建密钥.

如果机器在防火墙后面,端口22可能不会打开(有充分的理由!)你必须以某种方式通过这个端口访问机器,或者你在下面选择一个...如果你不在控制你的防火墙,这可能会很痛苦 - 无论如何,更多关于这个端口的东西.

在远程计算机上,在/ Users/Shared中创建一个共享的主存储库目录,例如/ Users/Shared/git ...最好不要过于具有命名性.

现在,在该目录中创建一个子文件夹,将其命名为/ Users/Shared/git/Test1或您喜欢的任何名称.

在远程机器上的终端,去你刚才提出(/用户/共享/的git/Test1的),该目录,并创建第一个远程Git仓库,你通过捆绑"混帐--bare初始化"在提示符下做到这一点,从在该目录中,这将创建所有必需的repo文件.关于这个提示的含义有注释......但是现在,我们只是希望让你连接并运行,但显然你应该花时间在某个时候了解这些提示.

在远程控制台上的Finder GUI中(在OSX上的GUI中通常更容易,因为与标准UNIX相比,perms会变得非常糟糕)选择/ Users/Shared/git文件夹,获取信息并授予读/写访问权限该目录和所有子目录,以及您之前在OSX系统首选项中创建的存储库访问组.将更改递归应用到所有子文件夹的快速方法是解锁信息面板,然后单击底部的小齿轮符号 - 选择"将更改应用于封闭项目..."

大安全警告:如上所述,除非你希望互联网上的每个机器人试图强行进入你的存储库,你必须将远程服务器的SSH端口从22改为其他任何东西......老实说,这里有机器人除了嗅到开放端口22s之外什么都不做的网.更改端口#对于安全来说几乎不是蜜蜂的膝盖 - 但是 - 它会节省大量的防火墙日志抖动,因为否则,每个机器人几乎会立即找到你并开始暴力攻击.

更改远程OSX git框上的SSH端口:

在您的防火墙上打开一个针对您熟悉的TCP编号的针孔 - 有关可用TCP端口的列表,请转到此处,然后选择不在列表中的内容:http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

要更改SSH端口,您必须打开/System/Library/LaunchDeamons/ssh.plist,但首先,请备份此文件的副本!然后在您喜欢的文本编辑器中打开它.(这需要管理员权限才能编辑); 你将不得不在列表中添加一个"监听器"...这就是我所做的,经过多次痛苦和折磨,它起作用了:

 /System/Library/LaunchDeamons/ssh.plist更改

不幸的是,使用关键命令在OSX客户端上重新启动SSH是一项科学项目,因此您必须返回系统首选项 - >共享,然后关闭然后再启用"远程登录",或者只需重新启动框 - 不要不用担心,如果你做得对,你就可以向防火墙后面的任何人开放标准的SSH端口,以及一个可以打开的新端口,防火墙将指向外部任何人.

要测试新端口,请在本地计算机上输入ssh -p 65534 you@remoteGitBox.com,因为我确定您已经猜到了,65534是您选择的任何端口号的替代品.

再次,如果系统提示您,请创建任何必要的ssh密钥 - 但仅限于您的帐户!如果您无法通过新端口使用SSH登录,是否记得重新启动服务或计算机?在其他任何工作之前,你必须让它工作!

接下来,你将不得不处理在远程盒子上获得所有必要的路径Alias' - 如果你不这样做,当你试图推进时,你会得到神秘的"git-upload-pack"缺失信息XCode中的远程存储库.

在终端中,作为远程​​控制台上的管理员,将目录更改为/ usr/bin /

然后在终端中,键入以下命令sudo ln -s/usr/local/git/bin/git*.(是的,这是一个句号,包括它),如果您使用默认的git安装程序,该路径将起作用,否则,您将必须输入sudo ln -s/[path/to/git]/bin/git*.这将需要管理员访问权限.(系统会提示您输入密码)

所以 - 这是你到目前为止所做的:

  • 安装git
  • 设置存储库
  • 设置到该存储库的必要路径,包括一些自定义链接
  • 创建用户帐户
  • 为这些帐户创建了一个组,并将该组文件级别的读/写权限授予了存储库
  • 在SSH中创建了一个新的SSH端口
  • 改变你的防火墙指向这个端口(除非你疯了,永远不要打开22端口到互联网)

好的,现在在本地机器上的XCode上

我建议创建一个新的测试项目......你称之为TestProject1并不重要...但是当你逐步完成模板制作它时,一定要创建它自己的本地git存储库(这个是创建模板中的一个选项,在对话框中).(大部分内容都在SO的其他地方有所涉及,但为了与您已经习惯的参考文献保持一致,我会继续)

现在我们必须告诉本地机器上的XCode有关远程仓库的信息,并将其同步.

在本地计算机上的XCode中,转到Window-> Organizer

向下滚动左侧的列表,找到刚刚创建的新项目.

点击名为"遥控器"的文件夹

这将打开右侧面板中的远程页面,在页面底部,单击"添加远程"按钮

这将打开一个dialgue框,在名称区域中输入一些内容供您参考...这不是一个URL,因此它可以简短,但有点描述性:如"MacMini_Test1"

在位置字段中,事情并非如此简单......您需要为我们刚设置的远程框输入正确的URL ...这可能会很痛苦,但如果您做得对,那么您将会输入这样的东西

SSH://you@remoteGitBox.com:65534 /用户/共享/ GIT中/ TEST1

这应该工作!请注意我们如何在地址后面包含端口号,然后是repo的绝对路径

单击"创建"按钮,将打开一个新提示,询问您的SSH密码...输入.

有时XCode有点卡在这里,你必须重新启动...不幸的是,有时,你得到的URL错了,它看起来完全一样......无论如何,如果你在上面做了所有事情......至少在重新启动后,事情应该可以

退出组织者,然后返回主XCode窗口......

将任何小注释写入代码文件,保存,只需更改它...

像往常一样提交对本地存储库的任何更改(在您使用新注释保存后,M将出现在文件列表中的文件名旁边,控制单击该文件并按照菜单将更改提交到本地存储库):您必须先提交任何本地更改,然后才能将这些更改"推送"到远程存储库.

推动远程回购

转到文件菜单,选择文件 - >源代码控制 - >推送

一个菜单应该下拉,经过一两分钟的检查后,应该会出现一个绿灯,旁边有文字说"Respository is online",下拉列表中的Respository名称为"MacMini_Test1",如果你跟上面的名字一起去了.

选择"推送"按钮......您的更改应该被推送到远程仓库.

你是Sooooooooooooo完成的!

我为没有时间用这个"操作方法"获得更多图形而道歉,并且这个系统上的许多其他人提供了关键信息来实现这一点,很难开始上市(简而言之,我的道歉 - 现在,随着时间的推移,我会增加更多的荣誉.无论如何......在OSX Snow Leopard上,在防火墙后面,在定制的SSH端口上运行个人git远程服务器,以便与XCode 4.1或更高版本的项目建立链接.

呼!