让git库目录共享:git库中引用文件夹/文件
2016-05-15 00:51
381 查看
前言
一般情况下我们需要版本管理的所有文件都会在同一文件夹下,可以由一个git库来统一管理。可是有时我们也许会遇到这样的需求:几个工程共用一个基础库工程,这几个工程都可以对此库进行修改,同时要保证共用、同步更新。如我们有管理的资料库A、资料库B,都需要包含共享资料库C,A、B都可对资料C中的文档进行更新。同时要保证用户查看最新版本的A、B库时要保证看到的共享资料库C中的资料都是最新的且是同一份,此时我们就需要A、B共享一处C库的引用,但是git库要使用快捷方式是不会更新到原文件的,如何才能共享呢?
此时在B库中创建C库的创建硬连接(hard link)即可像操作普通文件夹一样操作C。
硬连接与软连接
一图以弊之,快速理解:硬连接:同一文件的不同别名,指向的是真实的文件,文件的移动不影响硬连接的使用,不可跨文件系统创建。
软连接:区别于指向的文件,软连接本身是一个真实的文件,文件内容为指向文件的地址信息,所以原文件的文件名修改或文件移位会使软连接失效。Windows中的普通快捷方式就是一种软链接。
知道硬连接的概念后就可以大致明白如何做了。
比如将共享库workspaceC放到git库workspaceA中,在workspaceB中创建workspaceC的硬连接即可让workspaceB成功包含workspaceC.
各平台下创建硬连接的方法如下:
OSX
使用 brew install hardlink-osxcreate a hard link: hln source destination
remove the link: hln -u destination
或者也可以手动编译一版本:
#include <unistd.h> #include <stdio.h> int main(int argc, char *argv[]) { if (argc != 3) return 1; int ret = link(argv[1], argv[2]); if (ret != 0) perror("link"); return ret; }
在Terminal中编译:
gcc -o hlink hlink.c -Wall
调用:
./hlink workspaceA/workspaceC workspaceB/workspaceC
Windows
使用mklink命令,创建的硬连接文件夹/文件会有快捷方式图标:C:\Users\usename>mklink 创建符号链接。 MKLINK [[/D] | [/H] | [/J]] Link Target /D 创建目录符号链接。默认为文件 符号链接。 /H 创建硬链接而非符号链接。 /J 创建目录联接。 Link 指定新的符号链接名称。 Target 指定新链接引用的路径 (相对或绝对)。
创建目录硬连接只使用j参数即可。
mklink /j workspaceA/workspaceC workspaceB/workspaceC
Linux
shell中使用ln命令,貌似无法为文件夹创建硬连接。ln src dest
相关文章推荐
- Window安装Oracle Database和Client
- 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
- Miko Android自学之路 WifiDirect中文最强详解,如何传输数据,如何设置GroupOwener,如何设置客户端以及服务器端
- linux list
- iOS中书写代码规范
- Velocity模版使用
- GeekBand C++第一周学习感悟
- tesseract-orc 合并识别结果
- [AngularJS面面观] 2. scope中的Dirty Checking(脏数据检查) --- Digest Cycle
- iOS开发-解决AVAudioRecorder录音文件无法保存的问题
- 3、梯度检验与高级优化 4、自编码算法与系数性
- oracle 从os文件读blob,从表中读blob写到os文件中
- 2016"百度之星" - 资格赛(Astar Round1)Problem D
- 最近笔记2
- UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法
- 290. Word Pattern
- 浅谈android中的图片处理之基本绘图(一)
- ubuntu14.10修改源
- 2016"百度之星" - 资格赛(Astar Round1)Problem C
- cocos2d热更新代码分析