您当前的位置:JZ5U绿色下载站文章中心设计学院Photoshop → 文章内容
  • 如何用Git管理你的每日行程

Git 是一个少有的能将如此多的现代计算封装到一个程序之中的应用程序,它能够用作许多其他应用程序的计算引擎。固然它以跟踪软件开发中的源代码更改而出名,但它还有许多其他用处,能够让你的生活更轻松、更有条理。在这个 Git 系列中,我们将分享七种不为人知的运用 Git 的办法。

今天,我们将运用 Git 来跟踪你的日历。

运用 Git 跟踪你的日程布置

假如时间自身只是能够管理和版本控制的源代码呢?固然证明或反驳这种理论可能超出了本文的范围,但在 Git 的协助下,你能够将时间视为源代码并管理你的日程布置。

日历的卫冕冠军是 CalDAV 协议,它支撑了如 NextCloud 这样的盛行的开源及闭源的日历应用程序。CalDAV 没什么问题(评论者,请留意),但它并不合适一切人,除此之外,它还有一种不同于单一文化的鼓舞人心的东西。

由于我对大量运用 GUI 的 CalDAV 客户端没有兴味(假如你正在寻觅一个好的终端 CalDAV 查看器,请参阅 khal ),我开端研讨基于文本的替代计划。基于文本的日历具有在 明文 中工作的一切常见益处。它很轻巧,十分便携,只需它构造化,就很容易解析和美化(无论美丽对你意味着什么)。

最重要的是,它正是 Git 旨在管理的内容。

Org 形式不是一种可怕的方式

假如你没有对你的明文添加构造,它很快就会堕入一种天马行空般的紊乱,变成恶魔才干懂的符号。侥幸的是,有一种用于日历的标志语法,它包含在令人尊崇的消费力 Emacs 形式 —— Org 形式 中(供认吧,你其实不断想开端运用它)。

许多人没有认识到 Org 形式的惊人之处在于 你不需求晓得以至不需求运用 Emacs 来应用 Org 形式树立的商定。假如你运用 Emacs,你会得到许多很棒的功用,但是假如 Emacs 对你来说太难了,那么你能够完成一个基于 Git 的 Org 形式的日历系统,而不需求装置 Emacs。

关于 Org 形式你独一需求晓得的局部是它的语法。Org 形式的语法维护本钱低、直观。运用 Org 形式而不是 GUI 日历应用程序停止日历记载的最大区别在于工作流程:你能够创立一个任务列表,然后每天赋配一个任务,而不是转到日历并查找要布置任务的日期。

组织形式中的列表运用星号(*)作为项目符号。这是我的游戏任务列表:

* Gaming** Build Stardrifter character** Read Stardrifter rules** Stardrifter playtest** Blue Planet @ Mike's** Run Rappan Athuk*** Purchase hard copy*** Skim Rappan Athuk*** Build Rappan Athuk maps in maptool*** Sort Rappan Athuk tokens

假如你熟习 CommonMark 或 Markdown,你会留意到,Org 形式不是运用空格来创立子任务,而是更明白地运用了其它项目符号。无论你的运用背景和列表是什么,这都是一种构建列表的直观且简单的办法,它显然与 Emacs 没有内在联络(虽然运用 Emacs 为你提供了快捷方式,因而你能够快速地重新排列列表)。

要将列表转换为日历中的方案任务或事情,请返回并添加关键字 SCHEDULED 和(可选):CATEGORY:。

* Gaming:CATEGORY: Game** Build Stardrifter characterSCHEDULED: <2019-03-22 18:00-19:00>** Read Stardrifter rulesSCHEDULED: <2019-03-22 19:00-21:00>** Stardrifter playtestSCHEDULED: <2019-03-25 0900-1300>** Blue Planet @ Mike'sSCHEDULED: <2019-03-18 18:00-23:00 +1w>and so on...

SCHEDULED 关键字将该条目的记为你希望收到通知的事情,并且可选的 :CATEGORY: 关键字是一个可供你本人运用的恣意标志系统(在 Emacs 中,你能够依据类别对条目运用颜色代码)。

关于反复事情,你能够运用符号(如+1w)创立每周事情或 +2w 以停止每两周一次的事情,依此类推。

一切可用于 Org 形式的花哨标志都 记载于文档 ,所以不要犹疑,找到更多技巧来让它满足你的需求。

放进 Git

假如没有 Git,你的 Org 形式的日程布置只不过是本地计算机上的文件。这是 21 世纪,所以你至少需求能够在手机上运用你的日历,即使不是在你一切的个人电脑上。你能够运用 Git 为本人和别人发布日历。

首先,为 .org 文件创立一个目录。我将我的存储在 ~/cal 中。

$ mkdir ~/cal

转到你的目录并使其成为 Git 存储库:

$ cd cal$ git init

将 .org 文件挪动到你本地的 Git 存储库。在理论中,我为每个类别维护一个 .org 文件。

$ mv ~/*.org ~/cal$ lsGame.org Meal.org Seth.org Work.org

暂存并提交你的文件:

$ git add *.org$ git commit -m 'cal init'

创立一个 Git 远程源

要在任何中央提供日历,你必需在互联网上具有 Git 存储库。你的日历是纯文本,因而任何 Git 存储库都能够。你能够将日历放在 GitLab 或任何其他公共 Git 托管效劳(以至是专有效劳)上,只需你的主机允许,你以至能够将该存储库标志为私有库。假如你不想将日历发布到你无法控制的效劳器,则能够自行托管 Git 存储库,或者为单个用户运用裸存储库,或者运用 Gitolite 或 Gitea 等前端效劳。

为了简单起见,我将假定一个自托管的 Git 裸存储库。你能够运用 Git 命令在任何具有 SSH 访问权限的效劳器上创立一个远程裸存储库:

$ ssh -p 22122 [seth@example.com][14][remote]$ mkdir cal.git[remote]$ cd cal.git[remote]$ git init --bare[remote]$ exit

这个裸存储库能够作为你日历在互联网上的家。

将其设置为本地 Git 存储库(在你的计算机上,而不是你的效劳器上)的远程源:

$ git remote add origin seth@example.com:/home/seth/cal.git

然后推送你的日历到该效劳器:

$ git push -u origin HEAD

将你的日历放在 Git 存储库中,就能够在任何运转 Git 的设备上运用它。这意味着你能够对方案停止更新和更改,并将更改推送到上游,以便在任何中央停止更新。

我运用这种办法使我的日历在我的工作笔记本电脑和家庭工作站之间坚持同步。由于我每天大局部时间都在运用 Emacs,因而可以在 Emacs 中查看和编辑我的日历是一个很大的便利。关于大多数运用挪动设备的人来说也是如此,因而下一步是在挪动设备上设置 Org 形式的日历系统。

挪动设备上的 Git

由于你的日历数据是纯文本的,严厉来说,你能够在任何能够读取文本文件的设备上“运用”它。这是这个系统之美的一局部;你永远不会短少原始数据。但是,要依照你希望的现代日历的工作方式将日历集成到挪动设备上,你需求两个组件:挪动设备上的 Git 客户端和 Org 形式查看器。

挪动设备上的 Git 客户端

MGit 是 Android 上的优秀 Git 客户端。同样,iOS 也有 Git 客户端。

一旦装置了 MGit(或相似的 Git 客户端),你必需克隆日历存储库,以便在你的手机上有副本。要从挪动设备访问效劳器,必需设置 SSH 密钥停止身份考证。MGit 能够为你生成和存储密钥,你必需将其添加到效劳器的 ~/.ssh/authorized_keys 文件或托管的 Git 的帐户设置中的 SSH 密钥中。

你必需手动执行此操作。MGit 没有登录你的效劳器或托管的 Git 帐户的界面。假如你不这样做,你的挪动设备将无法访问你的效劳器以访问你的日历数据。

我是经过将我在 MGit 中生成的密钥文件经过 KDE Connect 复制到我的笔记本电脑来完成的(但你能够经过蓝牙、SD 卡读卡器或 USB 电缆停止相同操作,详细取决于你访问手机上的数据的首选办法)。 我用这个命令将密钥(一个名为 calkey 的文件)复制到我的效劳器:

$ cat calkey | ssh seth@example.com "cat >> /home/seth/.ssh/authorized_keys"

你可能有不同的办法,但假如你曾经将效劳器设置为无密码登录,这是完整相同的过程。假如你运用的是 GitLab 等托管的 Git 效劳,则必需将密钥文件的内容复制并粘贴到用户帐户的 SSH 密钥面板中。


Adding key file data to GitLab


完成后,你的挪动设备能够向你的效劳器受权,但仍需求晓得在哪里查找你的日历数据。不同的应用程序可能运用不同的表示法,但 MGit 运用普通的旧式 Git-over-SSH。这意味着假如你运用的是非规范 SSH 端口,则必需指定要运用的 SSH 端口:

$ git clone ssh://seth@example.com:22122//home/seth/git/cal.git


Specifying SSH port in MGit


假如你运用其他应用程序,它可能会运用不同的语法,允许你在特殊字段中提供端口,或删除 ssh:// 前缀。假如遇到问题,请参阅应用程序文档。

将存储库克隆到手机。


Cloned repositories


很少有 Git 应用程序设置为自动更新存储库。有一些应用程序能够用来自动拉取,或者你能够设置 Git 钩子来推送效劳器的更新 —— 但我不会在这里讨论这些。目前,在对日历停止更新后,请务必在 MGit 中手动提取新更改(或者假如在手机上更改了事情,请将更改推送到效劳器)。


MGit push/pull settings


挪动设备上的日历

有一些应用程序能够为挪动设备上的 Org 形式提供前端。 Orgzly 是一个很棒的开源 Android 应用程序,它为 Org 形式的从 Agenda 形式到 TODO 列表的大多数功用提供了一个界面。装置并启动它。

从主菜单中,选择“设置同步存储库”,然后选择包含日历文件的目录(即,从效劳器克隆的 Git 存储库)。

给 Orgzly 一点时间来导入数据,然后运用 Orgzly 的 汉堡包 菜单选择日程视图。


Orgzly's agenda view


在 Orgzly 的“设置提示”菜单中,你能够选择在手机上触发通知的事情类型。你能够取得 SCHEDULED 任务,DEADLINE 任务或任何分配了事情时间的任何通知。假如你将手机用作任务管理器,那么你将永远不会错过 Org 形式和 Orgzly 的活动。


Orgzly notification


Orgzly 不只仅是一个解析器。你能够编辑和更新事情,以至标志事情为 DONE。


Orgzly to-do list

专为你而设计

关于运用 Org 形式和 Git 的重要一点是,这两个应用程序都十分灵敏,并且你能够自定义它们的工作方式和内容,以便它们可以顺应你的需求。假如本文中的内容是对你如何组织生活或管理每周时间表的冒犯,但你喜欢此提案提供的其他局部,那么请丢弃你不喜欢的局部。假如需求,你能够在 Emacs 中运用 Org 形式,或者你能够将其用作日历标志。你能够将手机设置为在一天完毕时从计算机上拉取 Git 数据,而不是从互联网上的效劳器上,或者你能够将计算机配置为在手机插入时同步日历,或者你能够每天管理它,就像你把你工作日所需的一切东西都装到你的手机上一样。这取决于你,而这是关于 Git、Org 形式和开源的最重要的事情。


  • 作者:互联网  来源:本站整理  发布时间:2019-10-30 00:14:47


------------------------------- · 相关文档浏览 · --------------------------------------------------------------------- · 热门文档浏览 · -------------------------------------