Project

gitdb

0.0
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
"a simple data storage based on git, designed for Git-Contacts"
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.7
~> 10.0

Runtime

~> 0.21.3
 Project Readme

Git Contacts

什么是 Git Contacts

GitContacts是采用Git来存储、共享通讯录的新的方式。适用于单一群体间(家庭、工作场合、同学圈)成员共享通讯录。

解决了什么问题

单一群体间共享通讯录,又难以做到权限控制。一般来说,用户对自己的名片拥有完全的权限,对他人的名片有读权限。根据KISS原则,只要每个人做到维护好自己的名片,那么整个群体间的通讯录就能良好运作。当一个人更改了自己的联系方式后,无需通知其他人。

目前实验室采用的名片服务器没有写权限的控制,用户误操作就容易修改他人名片或者加入他人名片。误操作发生后没有回滚的机制。

如何解决

Git Contacts在Git仓库的基础上进行封装,Git仓库仅做通讯录数据存储使用。用户刷新通讯录操作对应Git中的Pull。而对通讯录的修改操作(Merge)操作放入一个队列,如果用户操作的是自己的名片,则自动允许Merge,否则需要经过群体的管理员批准。 这些操作都需要在Git操作基础上进行RESTful的封装,以适合所有的客户端(iOS、Android、Web)。

用户的误操作可以通过管理员进行回滚(Revert)到之前的版本完成。

系统设计

Git-Contacts的系统由三部分组成,每部分负责任务不同,各部分独立为一个开发分支

  • Gitdb
  • Git-Contacts
  • Web-Service

Gitdb 负责底层的数据存储,比如 Card 和 Contacts 的底层读写,封装了Git的常用操作。

Git-Contacts 负责上层的数据存储,比如用户管理、读写权限管理、Request 管理等操作。

Web-Service 负责 RESTful API 部分,将 payload 传至 Git-Contacts

To-do

完成CardDAVRFC6352中服务器端所有接口。