@wxy
This commit is contained in:
Xingyu Wang 2019-09-15 10:09:43 +08:00
parent 19c3ca9a1d
commit 447f237b03

View File

@ -1,6 +1,6 @@
[#]: collector: (lujun9972)
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: reviewer: (wxy)
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Use Git as the backend for chat)
@ -10,27 +10,27 @@
用 Git 作为聊天应用的后端
======
> GIC 是一个原型聊天应用程序,展示了一种使用 Git 的新方法。
> GIC 是一个聊天应用程序的原型,展示了一种使用 Git 的新方法。
![Team communication, chat][1]
![](https://img.linux.net.cn/data/attachment/album/201909/15/100905euzi3l5xgslsgx7i.png)
[Git][2] 是一个少有的能将如此多的现代计算封装到一个程序之中的应用程序,它可以用作许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名,但它还有许多其他用途,可以让你的生活更轻松、更有条理。在这个 Git 系列中,我们将分享七种鲜为人知的使用 Git 的方法。
今天我们来看看 GIC ,它是一个基于 Git 的聊天应用。
今天我们来看看 GIC它是一个基于 Git 的聊天应用。
### 初识 GIC
虽然 Git 的作者可能期望会为 Git 创建前端,但毫无疑问他们从未预料到 Git 会成为某种后端,如聊天客户端的后端。然而,这正是开发人员 Ephi Gabay 用他的实验性的用于概念验证的 [GIC][3] 所做的事情:用 [Node.js][4] 编写的聊天客户端使用 Git 作为其后端数据库。
虽然 Git 的作者可能期望会为 Git 创建前端,但毫无疑问他们从未预料到 Git 会成为某种后端,如聊天客户端的后端。然而,这正是开发人员 Ephi Gabay 用他的实验性的概念验证应用 [GIC][3] 所做的事情:用 [Node.js][4] 编写的聊天客户端使用 Git 作为其后端数据库。
GIC 并没有打算用于生产用途。这纯粹是一种编程练习,但它证明了开源技术的灵活性。令人惊讶的是,除了 Node 库和 Git 本身,该客户端只包含 300 行代码。这个聊天客户端和开源所反映出来的最好的地方之一:建立在现有工作基础上的能力。眼见为实,你应该自己亲自来了解一下 GIC。
GIC 并没有打算用于生产用途。这纯粹是一种编程练习,但它证明了开源技术的灵活性。令人惊讶的是,除了 Node 库和 Git 本身,该客户端只包含 300 行代码。这是这个聊天客户端和开源所反映出来的最好的地方之一:建立在现有工作基础上的能力。眼见为实,你应该自己亲自来了解一下 GIC。
### 架设起来
GIC 使用 Git 作为引擎,因此您需要一个空的 Git 存储库为其聊天室和记录器提供服务。存储库可以托管在任何地方,只要你和需要访问聊天服务的任何人可以访问该存储库。例如,你可以在 GitLab 等免费 Git 托管服务上设置 Git 存储库,并授予聊天用户对该 Git 存储库的贡献者访问权限。(他们必须能够提交到存储库,因为每个聊天消息都是一个文提交。)
GIC 使用 Git 作为引擎,因此你需要一个空的 Git 存储库为聊天室和记录器提供服务。存储库可以托管在任何地方,只要你和需要访问聊天服务的人可以访问该存储库就行。例如,你可以在 GitLab 等免费 Git 托管服务上设置 Git 存储库,并授予聊天用户对该 Git 存储库的贡献者访问权限。(他们必须能够提交到存储库,因为每个聊天消息都是一个文本的提交。)
如果你自己托管,请创建一个中心化的裸存储库。聊天中的每个用户必须在裸存储库所在的服务器上拥有一个帐户。你可以使用 Git 托管软件创建特定于 Git 的帐户,如 [Gitolite][5] 或 [Gitea][6],或者你可以在服务器上为他们提供个人用户帐户,可能使用 `git-shell` 来限制他们对 Git 的访问
如果你自己托管,请创建一个中心化的裸存储库。聊天中的每个用户必须在裸存储库所在的服务器上拥有一个帐户。你可以使用如 [Gitolite][5] 或 [Gitea][6] 这样的 Git 托管软件创建特定于 Git 的帐户,或者你可以在服务器上为他们提供个人用户帐户,可以使用 `git-shell` 来限制他们只能访问 Git
自托管实例的性能最好。无论你是自己托管还是使用托管服务,你创建的 Git 存储库都必须具有活跃分支,否则 GIC 将无法在用户聊天时进行提交,因为没有 Git HEAD。确保分支初始化和活跃的最简单方法是在创建时提交 `README` 或许可证文件。如果你没有这样做,你可以在事后创建并提交一个:
自托管实例的性能最好。无论你是自己托管还是使用托管服务,你创建的 Git 存储库都必须具有一个活跃分支,否则 GIC 将无法在用户聊天时进行提交,因为没有 Git HEAD。确保分支初始化和活跃的最简单方法是在创建存储库时提交 `README` 或许可证文件。如果你没有这样做,你可以在事后创建并提交一个:
```
$ echo "chat logs" > README
@ -41,7 +41,7 @@ $ git push -u origin HEAD
### 安装 GIC
由于 GIC 基于 Git 并使用 Node.js 编写,因此必须首先安装 Git、Node.js 和 Node 包管理器npm应该与 Node 捆绑在一起安装)。安装它们的命令因 Linux 或 BSD 发行版而异,这是 Fedora 上的一个示例命令:
由于 GIC 基于 Git 并使用 Node.js 编写,因此必须首先安装 Git、Node.js 和 Node 包管理器npm应该与 Node 捆绑在一起)。安装它们的命令因 Linux 或 BSD 发行版而异,这是 Fedora 上的一个示例命令:
```
$ sudo dnf install git nodejs
@ -78,7 +78,6 @@ module.exports = {
在尝试 GIC 之前测试你与 Git 存储库的连接,以确保你的配置是正确的:
```
$ git clone --quiet seth@example.com:/home/gitchat/chatdemo.git > /dev/null
```
@ -97,9 +96,9 @@ $ npm start
![GIC][10]
*基于Git的聊天客户端。 他们接下来会怎么想?*
*基于 Git 的聊天客户端。 他们接下来会怎么想?*
正如问候消息所说Git 中的分支在 GIC 中就是聊天室或频道。无法在 GIC UI 中创建新分支,但如果你在另一个终端会话或 Web UI 中创建一个分支,它将立即显示在 GIC 中。将一些 IRC 式的命令加到 GIC 中并不需要太多工作。
正如问候消息所说Git 中的分支在 GIC 中就是聊天室或频道。无法在 GIC UI 中创建新分支,但如果你在另一个终端会话或 Web UI 中创建一个分支,它将立即显示在 GIC 中。将一些 IRC 式的命令加到 GIC 中并不需要太多工作。
聊了一会儿之后,可以看看你的 Git 存储库。由于聊天发生在 Git 中,因此存储库本身也是聊天日志:
@ -112,7 +111,7 @@ $ git log --pretty=format:"%p %cn %s"
### 退出 GIC
GIC 并不像 Vim 那么难以退出。你看,没有办法停止 GIC。它会一直运行直到它被杀死。当你准备停止 GIC 时,打开另一个终端选项卡或窗口并发出以下命令:
Vim 以来,还没有一个应用程序像 GIC 那么难以退出。你看,没有办法停止 GIC。它会一直运行直到它被杀死。当你准备停止 GIC 时,打开另一个终端选项卡或窗口并发出以下命令:
```
$ kill `pgrep npm`
@ -124,10 +123,10 @@ GIC 是一个新奇的事物。这是一个很好的例子,说明开源生态
via: https://opensource.com/article/19/4/git-based-chat
作者:[Seth Kenlon (Red Hat, Community Moderator)][a]
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出