当前位置: 首页 > 科技观察

使用Git管理您的日程安排

时间:2023-03-16 01:46:45 科技观察

像对待源代码一样对待时间,并在Git的帮助下维护您的日历。Git是将如此多的现代计算封装到一个程序中的罕见应用程序之一,该程序可以作为许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名,但它还有许多其他用途,可以让您的生活更轻松、更有条理。在这个Git系列中,我们将分享七种鲜为人知的Git使用方法。今天,我们将使用Git来跟踪您的日历。使用Git跟踪您的日程如果时间本身只是可以管理和版本控制的源代码呢?虽然证明或反驳这一理论可能超出了本文的范围,但在Git的帮助下,您可以将时间视为源代码并管理您的日程安排。日历的卫冕冠军是CalDAV协议,它为NextCloud等流行的开源和闭源日历应用程序提供支持。CalDAV没有任何问题(审稿人,请注意),但它并不适合所有人,除此之外,它还有一些不同于单一文化的鼓舞人心的东西。由于我对GUI繁重的CalDAV客户端不感兴趣(如果您正在寻找一个好的终端CalDAV查看器,请参阅khal),我开始研究基于文本的替代方案。基于文本的日历具有以明文形式工作的所有常见好处。它重量轻,非常便携,只要结构合理,就很容易解析和美化(无论美对你意味着什么)。最重要的是,这正是Git旨在管理的内容。Org模式并不是一个可怕的方式。如果您不为您的明文添加结构,它很快就会变成一堆只有魔鬼才能理解的异想天开的符号。幸运的是,古老的生产力Emacs模式--Org模式中包含日历的标记语法(承认这一点,您实际上一直想开始使用它)。许多人没有意识到的是,Org-mode的惊人之处在于您不需要知道甚至不需要使用Emacs来利用Org-mode建立的约定。如果你使用Emacs,你会得到很多很棒的功能,但是如果Emacs对你来说太难了,那么你可以在不安装Emacs的情况下实现一个基于Git的Org-mode日历系统。关于Org-mode,你需要了解的唯一部分是它的语法。Org-mode的语法是低维护和直观的。使用Org模式而不是GUI日历应用程序进行日历管理的最大区别在于工作流程:无需转到日历并查找您想要安排任务的日期,您可以创建一个任务列表,然后为每一天分配一个任务。org-mode中的列表使用星号(*)作为项目符号。这是我的游戏任务列表:*游戏**构建星际漂流者角色**阅读星际漂流者规则**星际漂流者游戏测试**蓝色星球@迈克的**RunRappanAthuk***购买硬拷贝***SkimRappanAthuk***构建maptool中的RappanAthuk地图***排序RappanAthuk令牌如果您熟悉CommonMark或Markdown,您会注意到,Org模式没有使用空格来创建子任务,而是更明确地使用其他项目符号。无论您的背景和列表如何,这都是一种构建列表的直观而简单的方法,而且它显然与Emacs没有内在联系(尽管使用Emacs为您提供了快捷方式,因此您可以快速重新排列列表)。要将列表变成日历中的计划任务或事件,请返回并添加关键字SCHEDULED和(可选):CATEGORY:。*游戏:类别:游戏**建立星际漂流者角色预定:<2019-03-2218:00-19:00>**阅读星际漂流者规则预定:<2019-03-2219:00-21:00>**星际漂流者游戏测试预定:<2019-03-250900-1300>**BluePlanet@Mike'sSCHEDULED:<2019-03-1818:00-23:00+1w>等等...SCHEDULED关键字将此条目标记为事件您希望收到通知,可选的:CATEGORY:关键字是一个任意的标记系统,供您自己使用(在Emacs中,您可以按类别对条目进行颜色编码)。对于重复发生的事件,您可以使用诸如+1w表示每周事件或+2w表示双周事件等符号。所有可用于Org-mode的精美标记都已记录在案,因此请不要犹豫,寻找更多技巧来满足您的需求。将其放入Git没有Git,您的Org模式日程表只不过是本地计算机上的一个文件。现在是21世纪,因此您至少需要能够在手机上使用日历,如果不是所有的PC的话。您可以使用Git为自己和他人发布日历。首先,为.org文件创建一个目录。我将我的存储在~/cal中。$mkdir~/cal转到您的目录并将其设为Git存储库:$cdcal$gitinit将.org文件移动到您的本地Git存储库。实际上,我为每个类别维护一个.org文件。$mv~/*.org~/cal$lsGame.orgMeal.orgSeth.orgWork.org暂存并提交你的文件:$gitadd*.org$gitcommit-m'calinit'创建一个Git远程源到要使日历随处可用,您必须在Internet上有一个Git存储库。您的日历是纯文本,因此任何Git存储库都可以。您可以将您的日历放在GitLab或任何其他公共Git托管服务(甚至是专有服务)上,您甚至可以将存储库标记为私有,只要您的主机允许。如果您不想将日历发布到不受您控制的服务器,您可以自己托管一个Git存储库,或者为单个用户使用裸存储库,或者使用像Gitolite或Gitea这样的前端服务。为简单起见,我假设有一个自托管的裸Git存储库。您可以使用Git命令在具有SSH访问权限的任何服务器上创建远程裸存储库:$ssh-p22122[seth@example.com][14][remote]$mkdircal.git[remote]$cdcal.git[remote]$gitinit--bare[remote]$exit这个裸存储库充当您的日历在Internet上的主页。将其设置为本地Git存储库(在您的计算机上,而不是您的服务器上)的远程源:$gitremoteaddoriginseth@example.com:/home/seth/cal.git并将您的日历推送到该服务器:$gitpush-uoriginHEAD将您的日历放入Git存储库,并使其在任何运行Git的设备上可用。这意味着您可以对计划进行更新和更改,并将更改推送到上游,以便它们可以在任何地方更新。我使用这种方法使工作笔记本电脑和家庭工作站之间的日历保持同步。因为我一天中大部分时间都在使用Emacs,所以能够在Emacs中查看和编辑我的日历非常方便。对于大多数使用移动设备的人来说也是如此,因此下一步是在移动设备上设置一个Org-mode日历系统。移动设备上的Git由于您的日历数据是纯文本格式,从技术上讲,您可以在任何可以读取文本文件的设备上“使用”它。这是该系统的优点之一;你永远不会缺少原始数据。但是,要按照您希望现代日历的工作方式在移动设备上集成日历,您需要两个组件:移动设备上的Git客户端和Org模式查看器。用于移动设备的Git客户端MGit是一款优秀的AndroidGit客户端。同样,有一个适用于iOS的Git客户端。一旦安装了MGit(或类似的Git客户端),您必须克隆日历存储库以在您的手机上拥有一个副本。要从移动设备访问服务器,必须设置SSH密钥以进行身份??验证。MGit可以为您生成和存储密钥,您必须将其添加到服务器的~/.ssh/authorized_keys文件或托管Git帐户设置中的SSH密钥。您必须手动执行此操作。MGit没有用于登录您的服务器或托管Git帐户的界面。否则,您的移动设备将无法访问您的服务器以访问您的日历数据。我通过KDECon??nect将我在MGit中生成的密钥文件复制到我的笔记本电脑(但你可以通过蓝牙、SD读卡器或USB数据线执行相同操作,具体取决于你访问手机的首选数据方法)。我使用以下命令将密钥(一个名为calkey的文件)复制到我的服务器:$catcalkey|sshseth@example.com"cat>>/home/seth/.ssh/authorized_keys"你可能有不同的方法,但如果你曾经为无密码登录设置过服务器,那么它是完全相同的过程。如果您使用GitLab等托管Git服务,则必须将密钥文件的内容复制并粘贴到您用户帐户的SSH密钥面板中。将关键文件数据添加到GitLab完成后,您的移动设备可以向您的服务器授权,但仍然需要知道在哪里可以找到您的日历数据。不同的应用程序可能使用不同的符号,但MGit使用普通的旧Git-over-SSH。这意味着,如果您使用的是非标准SSH端口,则必须指定要使用的SSH端口:$gitclonessh://seth@example.com:22122//home/seth/git/cal.gitSpecifyingSSHport在MGit中,如果您使用另一个应用程序,它可能会使用不同的语法,允许您在特殊字段中提供端口,或删除ssh://前缀。如果您遇到问题,请参阅您的应用程序文档。将存储库克隆到手机。克隆存储库很少有Git应用程序设置为自动更新存储库。有些应用程序可用于自动拉取,或者您可以设置Git挂钩以将更新推送到服务器——但我不会在这里讨论这些。目前,在对日历进行更新后,一定要在MGit中手动拉取新的更改(或者如果事件在手机上发生更改,则将更改推送到服务器)。MGit推/拉设置手机上的日历有一些应用程序可以在手机上提供Org模式的前端。Orgzly是一个很棒的开源Android应用程序,它为大多数Org模式的功能提供了一个接口,从议程模式到TODO列表。安装并启动它。从主菜单中选择设置同步存储库,然后选择包含日历文件的目录(即从服务器克隆的Git存储库)。给Orgzly一点时间导入数据,然后使用Orgzly的汉堡菜单选择Agenda视图。Orgzly的议程视图在Orgzly的“设置警报”菜单中,您可以选择触发手机通知的事件类型。您可以获得有关计划任务、截止日期任务或分配的任何事件时间的任何通知。如果您将手机用作任务管理器,您将永远不会错过OrgMode和Orgzly的活动。OrgzlynotificationOrgzly不仅仅是一个解析器。您可以编辑和更新事件,甚至可以将事件标记为完成。Orgzly待办事项列表专为您设计将Org模式与Git结合使用的重要一点是这两个应用程序都非常灵活,您可以自定义它们的工作方式和内容,以便它们适应您的需求。如果本文中的某些内容冒犯了您安排生活或管理每周日程的方式,但您喜欢此建议所提供的其他部分,那么请丢弃您不喜欢的部分。如果需要,您可以在Emacs中使用Org模式,也可以将其用作日历标记。您可以将您的手机设置为在一天结束时从您的计算机而不是从互联网上的服务器中提取Git数据,或者您可以将您的计算机配置为在插入电话时同步您的日历,或者您可以在每天,就像将工作日所需的一切都打包到手机中一样。这取决于您,这是Git、Org模式和开源最重要的事情。