Soft Link in Mercurial

Is there any equivalent in Mercurial for NIX for soft or hard links to directories or files.

Basically, the file (or directory) is linked to the file โ€œsomewhere elseโ€ and follows the version of this place (unlike the regular branch, I think where it would be necessary to merge)

+8
mercurial symlink hardlink
source share
2 answers

Dead versions of Mercurial that are internal to the repository are just great. He will discover them, write them down, and create them for you. Is there a specific use case you are looking for? The closest thing to a link that goes beyond the repository is subrepo, which is a pointer to a specific version of another repo.

Work with Symlinks

(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 <ry4an-hg@ry4an.org> 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 hard links are not

 $hg commit -Am "hardlinks target" adding link adding target $hg log -p changeset: 0:ec9407634133 tag: tip user: Chris Wesseling <chris.wesseling@cwi.nl> 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 
+7
source share

On * nix, hg Mercurial systems, check symbolic links ("symbolic links") for secure link protection. For example, absolute and empty paths are considered unsafe and therefore will not be added to the repository.

Mercurial developers have not fixed this feature. However, the source code contains a comment with a somewhat vague explanation:

 class pathauditor(object): '''ensure that a filesystem path contains no banned components. the following properties of a path are checked: - ends with a directory separator - under top-level .hg - starts at the root of a windows drive - contains ".." - traverses a symlink (eg a/symlink_here/b) - inside a nested repository (a callback can be used to approve some nested repositories, eg, subrepositories) ''' 

On Windows, symbolic links are not supported for various reasons:

+6
source share

All Articles