#版本控制 #控制系统 #语言 #内建函数 #互联网 #管理器

应用 derpy

derpy是一个简单的语言和版本控制无关的依赖管理器

1个不稳定版本

使用旧Rust 2015

0.1.0 2018年5月6日

#2121开发工具

MIT 许可证

38KB
865

derpy

Derpy管理您的依赖! ;)

我研究了一些没有内置互联网依赖、不受特定编程语言或特定版本控制系统约束的依赖管理器。我没有找到符合我要求的结果,所以我写了derpy!

注意:目前这是一个非常实验性的项目,还没有经过实战测试,现在把它当作一个玩具吧! :)

动机

我接触的一个开发环境使用了多个版本控制系统来管理不同类型的工件,并且网络安全性足够严格,以至于互联网访问几乎不可能。

该团队的项目通常在项目之间复制粘贴代码,而不是通过库共享,主要是因为现有的依赖管理工具没有解决他们的问题。

因此,我想写一个小工具来解决这个特定的问题,没有更多的东西。

高层次设计

该工具对版本控制系统是无关的,因为它没有内置与特定版本控制系统通信的代码,它包含一个简单的基于数据的系统,用于“教导”derpy如何执行与依赖项交互的基本操作。请参阅vcs_info目录中的示例。

该工具对语言是无关的,因为它纯粹是一个确保从特定存储库检索文件并将它们放置在项目目录中指定位置的机制。请注意,尽管目标是语言无关——它主要针对依赖管理状况较差的语言,如C/C++。这个工具没有取代现有依赖管理器的愿望。

由于没有中央存储库或类似的东西,该工具没有内置的互联网依赖,尽管没有人阻止“教导”derpy如何做。

示例

初始化

在项目目录中初始化derpy

derpy init

这将创建一个包含(空)依赖项列表的derpy.json文件。

添加依赖项

要添加依赖项,您至少需要以下三个信息

  • 版本控制系统 - 依赖项包含在哪个版本控制系统中?
  • 依赖名称 - 你将如何称呼这个依赖项(注意:这还将是该依赖项在项目中存储的文件夹名称)
  • URL - 一些字符串(通常是URL),用于说明如何找到依赖项

在这个示例中,让我们使用 git 作为 版本控制系统classdict 作为 依赖名称,以及 http://github.com/omaskery/classdict.git 作为 URL

derpy add git classdict http://github.com/omaskery/classdict.git

现在,derpy.json 文件将包含描述您新依赖项的信息,但还没有开始获取。

  • 想要跟踪依赖项的特定版本?请参阅 --version 参数
  • 想要将依赖项放置在除 project_dir/deps/ 之外的某个位置?请参阅 --target 参数
  • 您的版本控制系统需要每个依赖项特定的键值对吗?请参阅 --option 参数

获取依赖项

要获取项目的依赖项,只需运行

derpy acquire

这将遍历所有依赖项,并将它们放置在您的项目目录中,默认在 <your project directory>/deps/<dependency name> - 虽然可以通过传递 --target <target directory>derpy add 来覆盖。

请注意,完成后,项目目录中现在将出现一个新文件:derpy.lock.json。此文件的结构与derpy.json相同,但它将包含锁定每个依赖项到获取的确切版本的信息。通常这是一些git提交哈希或svn修订号等。

一旦生成了derpy.lock.json,任何随后的 derpy acquire 调用将自动获取锁文件中指定的特定版本,而不是可能检索到的“最新”版本。

升级依赖项

如果您希望升级依赖项的版本,而不是使用锁文件中指定的版本,请使用升级命令

derpy upgrade--all

这将有效地执行一个 acquire,但会表现得好像没有锁文件存在。要更具体地指定要升级的依赖项,请指定依赖项名称,而不是使用 '--all' 参数。例如,再次使用 classdict 示例

derpy upgrade classdict

要做的

  • 打下基础 - 让有一些可以真正解决问题的关键!
  • 使其递归,获取依赖项的依赖项
  • 记录代码
  • 记录工具

依赖项

~2.7–4MB
~70K SLoC