自动将点文件部署到本地路径或远程主机

Dotlink的Python项目详细描述


dotlink是一个简单的脚本,用于自动部署任意一组“dotfiles” 使用ssh/scp从存储库到本地路径甚至远程主机。

点链接不管理点文件本身,而是使用简单的文本文件 将存储库中的点文件名映射到它们相对于 目标路径。这允许您拥有不带点前缀的文件,因为 实例,或避免复制深层目录结构以跟踪单个文件。

[![生成状态](https://travis-ci.org/jreese/dotlink.png?branch=master)](https://travis-ci.org/jreese/dotlink

设置

dotlink需要python,版本2.7或3.2及更高版本。不 需要外部库。

要在系统范围内或在虚拟机中安装点链接,请执行以下操作:

# pip install dotlink

或者,如果您想破解点链接,请克隆repo并运行:

# python setup.py develop

用法

首先需要在dotfile的根目录中创建一个映射文件 名为.dotfiles(或仅dotfiles)的存储库,格式如下:

  • 每一行都包含本地存储库文件名,可以选择后跟 冒号和目标文件名(如果不同于本地文件名)。
  • 可以使用include“path/to/mapping”包含外部点文件映射, 并且请求的地图也将被加载。请求的路径可以是 是一个显式文件名,或包含名为dotfiles.dotfiles
  • 注释由以符号开头的行表示,并被忽略。

示例映射可能如下所示:

# the dotfiles to care about aliases: .alias .bashrc .profile: .profile htop: .config/htop/htoprc vim: .vim vimrc: .vimrc

# some external dotfile paths to include #include “repo2/dotfiles” #include “/full/patt/to/repo3/”

映射就位后,运行dotlink并告诉它源位置 存储库以及要将其部署到的位置:

$ dotlink [path/to/repository] [[[user@]host:]path/to/target]

源路径是可选的;如果 它会找到一个.dotfiles映射文件,除非您另有指定。目标 路径也是可选的,并假定为本地主目录。

源可以包括本地路径或远程git存储库url。 目标还可以包括本地路径,或通过ssh访问的远程路径 如果与当前登录不同,则提供主机名和用户名。

高级

###嵌入

如果要在点文件存储库中嵌入点链接, dotlink/dotlink.py是一个自包含的脚本,专门用于 用例。只需将dotfile.py复制到存储库中;它没有外部 依赖关系。

###远程源

源还可以指向远程位置,例如git存储库,以及 dotlink会将远程数据克隆到临时路径中,然后复制 将内容放入适当的路径中。如果您的源 路径以“git://”或“git@”开头,但也可以使用–git强制执行此操作 对于非标准URL。以下命令将克隆我的公共dotfile repo, 并将其安装到主目录:

$ dotlink git://github.com/jreese/dotfiles

这实际上相当于以下命令序列:

$ git clone git://github.com/jreese/dotfiles $ dotlink dotfiles $ rm -rf dotfiles

您甚至可以将远程源与远程目标结合起来克隆dotfile 本地存储库,然后通过scp将dotfiles复制到远程主机:

$ dotlink git://github.com/jreese/dotfiles jreese@devserver:

待办事项

一些计划的功能和更改是:

  • 添加对远程源(如ssh/scp)以及git repos或tarballs的支持
  • 从存储库内容生成映射文件?

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么是VMObject?   java将数据插入H2数据库表   java如何修改保存在一个卡夫卡主题中的Twitter API消息并将其发送到另一个卡夫卡主题   对象Java变量别名解决方法   java返回数组在try/catch中初始化   java DateTimeFormat shortDate无年份   java我如何在recycle应用程序的首次发布中突出显示项目   java使文本区域包含大量文本,其帧响应更快   类抛出的java ClassCircularyError。forName在转换TwoStacksPlainDatagramSocketImpl类时   swing如何在GroupLayout Java中设置Jframe背景图像   sip无法在独立java应用程序上运行PJSIPJNI包装   java Android internet连接问题   java当单击按钮VerEstoque时,应用程序停止。代码上有Logcat错误,请输入h3lp   java如何在JFrame上设置图像图标动画图像将加载但不会更改   与socket一起使用时,java错误的currentTimeMillis()   Java内部字符串表示:是UTF16吗?