Soft link in Mercurial

前端 未结 2 1163
难免孤独
难免孤独 2020-12-10 12:51

Is there some equivalent in Mercurial to NIX soft- or hard- links to directories or files.

Basically that a file (or directory) is linked to a file \"somewhere else\

2条回答
  •  南方客
    南方客 (楼主)
    2020-12-10 13:53

    Mercurial versions soft links that are internal to the repository just great. It'll detect them, record them, and create them for you. Is there a specific use case you're looking for? The closest thing to an link that reaches outside the repository is a subrepo, which is a pointer to a specific version of another repo.

    Symlinks work

    (df)Ry4ans-MacBook-Air:~ ry4an$ hg init olav
    (df)Ry4ans-MacBook-Air:~ ry4an$ cd olav/
    (df)Ry4ans-MacBook-Air:olav ry4an$ echo this > target
    (df)Ry4ans-MacBook-Air:olav ry4an$ ln -s target link
    (df)Ry4ans-MacBook-Air:olav ry4an$ ls -l
    total 16
    lrwxr-xr-x  1 ry4an  staff     6B Feb 16 19:25 link@ -> target
    -rw-r--r--  1 ry4an  staff     5B Feb 16 19:25 target
    (df)Ry4ans-MacBook-Air:olav ry4an$ hg commit -A -m "link and its target"
    adding link
    adding target
    (df)Ry4ans-MacBook-Air:olav ry4an$ hg log -p
    changeset:   0:42a41a431661
    tag:         tip
    user:        Ry4an Brase 
    date:        Sat Feb 16 19:26:17 2013 -0500
    summary:     link and its target
    
    diff -r 000000000000 -r 42a41a431661 link
    --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
    +++ b/link  Sat Feb 16 19:26:17 2013 -0500
    @@ -0,0 +1,1 @@
    +target
    \ No newline at end of file
    diff -r 000000000000 -r 42a41a431661 target
    --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
    +++ b/target    Sat Feb 16 19:26:17 2013 -0500
    @@ -0,0 +1,1 @@
    +this
    
    (df)Ry4ans-MacBook-Air:olav ry4an$ hg update null
    0 files updated, 0 files merged, 2 files removed, 0 files unresolved
    (df)Ry4ans-MacBook-Air:olav ry4an$ ls -l
    (df)Ry4ans-MacBook-Air:olav ry4an$ hg update tip
    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
    (df)Ry4ans-MacBook-Air:olav ry4an$ ls -l
    total 16
    lrwxr-xr-x  1 ry4an  staff     6B Feb 16 19:26 link@ -> target
    -rw-r--r--  1 ry4an  staff     5B Feb 16 19:26 target
    

    But hardlinks don't

    $hg commit -Am "hardlinks target"
    adding link
    adding target
    $hg log -p
    changeset:   0:ec9407634133
    tag:         tip
    user:        Chris Wesseling 
    date:        Wed Mar 13 23:14:44 2013 +0100
    summary:     hardlinks target
    
    diff -r 000000000000 -r ec9407634133 link
    --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
    +++ b/link      Wed Mar 13 23:14:44 2013 +0100
    @@ -0,0 +1,1 @@
    +foo
    diff -r 000000000000 -r ec9407634133 target
    --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
    +++ b/target    Wed Mar 13 23:14:44 2013 +0100
    @@ -0,0 +1,1 @@
    +foo
    
    $ls -lin
    total 8
    276702 -rw-r--r-- 2 1204653 5900 4 13 mrt 23:14 link
    276702 -rw-r--r-- 2 1204653 5900 4 13 mrt 23:14 target
    $hg update null
    0 files updated, 0 files merged, 2 files removed, 0 files unresolved
    $hg update tip
    2 files updated, 0 files merged, 0 files removed, 0 files unresolved
    $ls -lin
    total 8
    276719 -rw-r--r-- 1 1204653 5900 4 13 mrt 23:15 link
    276721 -rw-r--r-- 1 1204653 5900 4 13 mrt 23:15 target
    

提交回复
热议问题