您的位置:首页 > 其它

让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-osx

create 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: