在Foolscap毛皮上运行Git的工具。

git-foolscap的Python项目详细描述


git foolscap是git的一个扩展,允许您通过[foolscap]协议(http://foolscap.lothar.com/trac" rel="nofollow">http://foolscap.lothar.com/trac)发布或访问git存储库。这提供了ssh或经过身份验证的https的所有安全优势,但有几个重要优势:

  • 下游用户不需要服务器上的帐户:仅与他们共享秘密furl字符串就足以提供访问权限
  • 访问仅限于一个存储库:用户无法获得完整的shell访问权限
  • 服务器设置快捷方便
  • 用户可以很容易地被限制为只读访问

##安装

只需使用pip install git foolscap。这将在$path中安装两个脚本:git foolscapgit remote pb。前者是主要的入口点,git将在运行git foolscap命令时运行它。后者实现远程协议,git将在您访问远程url以"pb:"开头的存储库时使用它(即,它是furl)。

git foolscap取决于是否安装了foolscap,这取决于twisted和pyopenssl。

git foolscap-hgit foolscap–help将提供使用说明。(请注意,没有连字符的git foolscap–help不起作用,因为git foolscap不提供手册页)。

##操作理论

存储库是通过运行一个小型服务器(foolscap"flappserver")来发布的,该服务器在tcp端口上侦听加密连接。分配一个"furl",它将连接到特定存储库的git远程协议(以读+写或只读模式)。这个furl可以交给客户机,客户机只需将它用作标准g it remote的url(例如git clone furlgit remote add name furl)。foolscap furls是使用"pb:"作为其方案的uri,而不是"http:"或"https:"。

当git客户机遇到pb:furl时,它将控制权委托给一个名为git remote pb的程序(这是git的一个标准功能,对于任意方案名都是如此)。git remote pb程序知道如何使用foolscap连接到目标furl并通过它说出git remote协议。

从技术上讲,这意味着服务器只需要git foolscap可执行文件,而客户机只需要git remote pb可执行文件,但为了简单起见,两者都分布在同一个包中。

##用法:server

有关详细信息,请参见git foolscap–help。基本上,服务器只执行一次此部分:

TT> %git foolscap init端口=tcp:3116 %Git Foolscap开始

每个新客户的这部分:

TT> %Git Foolscap邀请"对收件人发表评论"

"invite"将生成一个"虫洞代码",接收用户必须在其"accept"命令中键入该代码。然后,安全毛皮将通过虫洞发送。

也可以使用git foolscap add添加毛皮(无需邀请)。然后必须将其剪切并粘贴到收件人。

要提供对单个存储库的只读访问,请将读写替换为只读。通过多次运行git foolscap addinvite可以创建任意数量的furls。每个都可以单独撤销。要撤消访问,请运行git foolscap list,找到索引号,并将其传递到git foolscap revoke中。

您可能需要安排运行git foolscap startm a cron@reboot作业或其他启动时启动脚本,以确保在系统重新启动时保留访问权限。

< Buff行情> @重新启动CD路径/to/repo&;git foolscap start

##用法:client

如果存储库所有者使用git foolscap invite,则只需将此代码键入:

TT> %git foolscap接受克隆

客户端可以对码字使用制表符补全,而字表是专门设计的,可以在嘈杂的语音频道上可靠地转录。

您可以从存储库内部运行以下命令,将新的furl添加到现有的repo中,而不是克隆存储库的新副本:

TT> %git foolscap accept添加遥控器

如果发布者使用了git foolscap add并向您发送了一个完整的furl(而不是一个虫洞代码),那么您只需从中克隆一个普通的https(https://github.com/warner/git foolscap.git)或ssh(git@github.com:warner/git foolscap.git)url。只要您安装了git foolscap,git就会找到正确的方法。

##清理毛皮

flappserver使用您提供的–location=来构造furl的"连接提示"部分。这将告诉客户端如何连接到服务器。服务器必须具有可公开访问的地址(或至少可由客户端访问),或者必须配置端口转发并将外部可访问的地址+端口放入furl中。

如果主机名错误,或者使用了一个IP地址,但它已更改,则可以稍后编辑furl。您还可以使用多个提示,客户端将尝试连接到每个提示,直到至少有一个提示起作用:

< Buff行情> pb://tvzddtbzbldtthde5kdsvjvzpweifx7ae@tcp:example.com:57306,tcp:example.org:57306/jmxpcs6lsmgtuzdomxbgtfcmhfmfbpc/my repo

furl中第一个看起来随机的大字符串确切地标识了预期的服务器公钥:它提供了连接将转到正确服务器的加密保证。不使用证书颁发机构或受信任的第三方。第二个随机字符串是一个秘密的"swissnum",它安全地标识被访问的资源(在本例中,是一个指向git存储库的表条目和一个读+写/只读模式)。了解了这个秘密就可以访问:要共享访问权限,请共享该秘密(以及使用该秘密所需的其他毛皮);要拒绝访问,请不要泄露该秘密。

##配置flappserver

每个flappserver都有一个"基本目录",其中保存其所有状态。git foolscap create默认为为此目的使用.git/foolscap/,必要时创建它,然后为新的furl添加一个条目。

如果发布多个存储库,则可能需要在它们之间共享flappserver,特别是在必须为每个服务器配置端口转发时。为此,首先使用foolscap的flappserver create basedir命令创建一个共享服务器,然后在运行git foolscap init时使用-flappserver=basedir参数。这将建立从.git/foolscap到真正basedir的符号链接,因此后续的git foolscap命令将直接向flappserver添加一个条目。如果basedir不存在,将创建它。

请注意,目前,git foolscap init–flappserver=basedir需要–port=–location=参数,即使basedir已经存在。但是,在这种情况下,为了支持basedir的现有配置,会忽略它们的值。希望在以后的版本中可以修复这个问题。

如果使用@rebootcronjob,则可能需要直接使用flappserver start,而不是git foolscap start

##错误,修补程序

请为git-f文件错误和补丁关于GitHub问题跟踪程序的oolscap,请访问https://github.com/warner/git-foolscap" rel="nofollow">https://github.com/warner/git foolscap

对于针对foolscap本身的bug和补丁,请使用foolscap trac,网址为http://foolscap.lothar.com/trac rel="nofollow">http://foolscap.lothar.com/trac。foolscap源代码发布在github上,网址是https://github.com/warner/foolscap" rel="nofollow">https://github.com/warner/foolscap

谢谢!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有字符串的java JNA调用与带有字节[]的java JNA调用的行为不同   java基于键列表获取子映射   重启后永久增加java堆大小?   JavaHTTPS服务器:相互SSL身份验证   java为什么接受接口的方法会拒绝该接口的实现?   片段中的java视图无法应用于()   ms access Java SQL更新命令不工作   java将web服务自动打包和部署到Oracle Application Server 10g   java有没有办法在安卓 studio中为安卓时钟设置多个警报?   位于FTP服务器上的文件上的Java校验和md5   在Java中创建类时遇到问题。有些方法不太确定   java错误:在类chrome\u驱动程序中找不到主方法   通用海图(Javascript\Java)