当前位置:   article > 正文

让git库目录共享:git库中引用文件夹/文件_在git中使用mklink

在git中使用mklink

前言

一般情况下我们需要版本管理的所有文件都会在同一文件夹下,可以由一个git库来统一管理。可是有时我们也许会遇到这样的需求:
几个工程共用一个基础库工程,这几个工程都可以对此库进行修改,同时要保证共用、同步更新。如我们有管理的资料库A、资料库B,都需要包含共享资料库C,A、B都可对资料C中的文档进行更新。同时要保证用户查看最新版本的A、B库时要保证看到的共享资料库C中的资料都是最新的且是同一份,此时我们就需要A、B共享一处C库的引用,但是git库要使用快捷方式是不会更新到原文件的,如何才能共享呢?
此时在B库中创建C库的创建硬连接(hard link)即可像操作普通文件夹一样操作C。

硬连接与软连接

一图以弊之,快速理解:
hard link and soft link

硬连接:同一文件的不同别名,指向的是真实的文件,文件的移动不影响硬连接的使用,不可跨文件系统创建。
软连接:区别于指向的文件,软连接本身是一个真实的文件,文件内容为指向文件的地址信息,所以原文件的文件名修改或文件移位会使软连接失效。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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在Terminal中编译:

gcc -o hlink hlink.c -Wall
  • 1

调用:

./hlink workspaceA/workspaceC workspaceB/workspaceC
  • 1

Windows

使用mklink命令,创建的硬连接文件夹/文件会有快捷方式图标:

C:\Users\usename>mklink
创建符号链接。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      创建目录符号链接。默认为文件
                符号链接。
        /H      创建硬链接而非符号链接。
        /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径
                (相对或绝对)。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

创建目录硬连接只使用j参数即可。

mklink /j workspaceA/workspaceC workspaceB/workspaceC
  • 1

Linux

shell中使用ln命令,貌似无法为文件夹创建硬连接。

ln src dest
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/695562
推荐阅读
相关标签
  

闽ICP备14008679号