GIC 是一个聊天应用法式的原型,展示了一种使用 Git 的新方式。
-- Seth Kenlon(作者)
Git 是一个少有的能将如斯多的现代较量封装到一个法式之中的应用法式,它能够用作很多其他应用法式的较量引擎。固然它以跟踪软件斥地中的源代码更改而著名,但它还有很多其他用途,能够让你的生活更轻松、更有层次。在这个 Git 系列中,我们将分享七种鲜为人知的使用 Git 的方式。
今天我们来看看 GIC,它是一个基于 Git 的聊天应用。初识 GIC
固然 Git 的作者们或者盼望会为 Git 建立前端,但毫无疑问他们从未预料到 Git 会成为某种后端,如聊天客户端的后端。然而,这恰是斥地人员 Ephi Gabay 用他的实验性的概念验证应用 GIC 所做的事情:用 Node.js 编写的聊天客户端,使用 Git 作为厥后端数据库。
GIC 并没有筹算用于生产用途。这纯粹是一种编程演习,但它证实了开源手艺的天真性。令人诧异的是,除了 Node 库和 Git 自己,该客户端只包含 300 行代码。这是这个聊天客户端和开源所反映出来的最好的处所之一:竖立在现有工作根蒂上的能力。目击为实,你应该本身亲自来认识一下 GIC。架设起来
GIC 使用 Git 作为引擎,是以你需要一个空的 Git 存储库为聊天室和记录器供应办事。存储库能够托管在任何处所,只要你和需要接见聊天办事的人能够接见该存储库就行。例如,你能够在 GitLab 等免费 Git 托管办事上设置 Git 存储库,并授予聊天用户对该 Git 存储库的进献者接见权限。(他们必需可以提交到存储库,因为每个聊天新闻都是一个文本的提交。)
若是你本身托管,请建立一个中心化的裸存储库。聊天中的每个用户必需在裸存储库地点的办事器上拥有一个帐户。你能够使用如 Gitolite 或 Gitea 如许的 Git 托管软件建立特定于 Git 的帐户,或许你能够在办事器上为他们供应小我用户帐户,能够使用 git-shell 来限制他们只能接见 Git。
自托管实例的机能最好。无论你是本身托管照样使用托管办事,你建立的 Git 存储库都必需具有一个活跃分支,不然 GIC 将无法在用户聊天时进行提交,因为没有 Git HEAD。确保分支初始化和活跃的最简洁方式是在建立存储库时提交 README 或许可证文件。若是你没有如许做,你能够在事后建立并提交一个:$ echo "chat logs" > README
$ git add README
$ git commit -m 'just creating a HEAD ref'
$ git push -u origin HEAD
安装 GIC
因为 GIC 基于 Git 并使用 Node.js 编写,是以必需首先安装 Git、Node.js 和 Node 保证理器npm(它应该与 Node 绑缚在一路)。安装它们的号令因 Linux 或 BSD 刊行版而异,这是 Fedora 上的一个示例号令:$ sudo dnf install git nodejs
若是你没有运行 Linux 或 BSD,请按照 git-scm.com 和 nodejs.org 上的安装解说进行把持。
是以,GIC 没有安装过程。每个用户(在此示例中为 Alice 和 Bob)必需将存储库克隆到其硬盘驱动器:$ git clone https://github.com/ephigabay/GIC GIC
将目录更改为 GIC 目录并使用 npm 安装 Node.js 依靠项:$ cd GIC
$ npm install
守候 Node 模块下载并安装。设置 GIC
GIC 独一需要的设置是 Git 聊天存储库的位置。编纂 config.js 文件:module.exports = {
gitRepo: 'seth@example.com:/home/gitchat/chatdemo.git',
messageCheckInterval: 500,
branchesCheckInterval: 5000
};
在测验 GIC 之前测试你与 Git 存储库的保持,以确保你的设置是准确的:$ git clone --quiet seth@example.com:/home/gitchat/chatdemo.git > /dev/null
假设你没有收到任何错误,就能够起头聊天了。用 Git 聊天
在 GIC 目录中启动聊天客户端:$ npm start
客户端首次启动时,必需克隆聊天存储库。因为它几乎是一个空的存储库,是以不会破费很长时间。输入你的新闻,然后按回车键发送新闻。
基于 Git 的聊天客户端。 他们接下来会怎么想?
正如问候新闻所说,Git 中的分支在 GIC 中就是聊天室或频道。无法在 GIC 的 UI 中建立新分支,但若是你在另一个终端会话或 Web UI 中建立一个分支,它将立刻显露在 GIC 中。将一些 IRC 式的号令加到 GIC 中并不需要太多工作。
聊了一会儿之后,能够看看你的 Git 存储库。因为聊天发生在 Git 中,是以存储库自己也是聊天日志:$ git log --pretty=format:"%p %cn %s"
4387984 Seth Kenlon Hey Chani, did you submit a talk for All Things Open this year?
36369bb Chani No I didn't get a chance. Did you?
[...]
退出 GIC
Vim 以来,还没有一个应用法式像 GIC 那么难以退出。你看,没有法子住手 GIC。它会一向运行,直到它被杀死。当你预备住手 GIC 时,打开另一个终端选项卡或窗口并发出以下号令:$ kill `pgrep npm`
GIC 是一个别致的事物。这是一个很好的例子,解说开源生态系统若何鼓励和促进缔造力和索求,并挑战我们从分歧角度审视应用法式。测验下 GIC,或许它会给你一些思路。至少,它能够让你与 Git 渡过一个下昼。
via: https://opensource.com/article/19/4/git-based-chat
作者: Seth Kenlon 选题: lujun9972 译者: wxy 校对: wxy
本文由 LCTT 原创编译, Linux中国 声誉推出点击“认识更多”可接见文内链接