2010-03-26 11 views
5

Mam pudełko Win7 x64 z uruchomioną wersją Tortoise 1.0 x64. O Tortoise ujawnia, że ​​ma 1,0 "z Mercurial-1.5, Python-2.6.4, PyGTK-2.16.0, GTK-2.18.7". Mam również zainstalowane ActivePython 2.6 i Mercurial 1.5 x64 (zainstalowane przez Mercurial instalatora od the 64-bit installer.Nie jedno klonowanie ze sztywnymi łączami na moim oknie Windows. Napędy na moim pudełku są również NTFS, który obsługuje twarde łącza. czynem, kiedy uruchomić interpreter Pythona i wykonać tworzenie twrdym poprzez win32file API, tworzy link powodzeniem:Jak uzyskać klonowanie hardlink na Windows

[email protected] C:\temp 
> python 
ActivePython 2.6.2.2 (ActiveState Software Inc.) based on 
Python 2.6.2 (r262:71600, Apr 21 2009, 15:05:37) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from win32file import * 
>>> CreateHardLink('C:\\temp\\Mike2.txt','C:\\temp\\Mike.txt') 
>>> ^Z 

[email protected] C:\temp 
> fsutil hardlink list Mike.txt 
\temp\Mike.txt 
\temp\Mike2.txt 

Jednakże, jeśli używam Mercurial do klonowania, nie uzyskać takie same wyniki :

[email protected] C:\Users\mcaron 
> which hg 
C:\Program Files (x86)\Mercurial\\hg.EXE 
[email protected] C:\temp 
> hg status demo 
[email protected] C:\temp 
> hg log demo 
changeset: 0:6db7092740d5 
tag:   tip 
user:  Michael Caron <[email protected]> 
date:  Wed Mar 24 16:08:38 2010 -0500 
summary:  first 

[email protected] C:\temp 
> hg clone demo demo2 
updating to branch default 
5 files updated, 0 files merged, 0 files removed, 0 files unresolved 
[email protected] C:\temp 
> fsutil hardlink list .\demo\mike.prtprp 
\temp\demo\mike.prtprp 
[email protected] C:\temp 
> fsutil hardlink list .\demo\mike1.prtprp 
\temp\demo\mike1.prtprp 
[email protected] C:\temp 
> fsutil hardlink list .\demo\mike1_2.prtprp 
\temp\demo\mike1_2.prtprp 
[email protected] C:\temp 
> fsutil hardlink list .\demo\mike2.prtprp 
\temp\demo\mike2.prtprp 

[email protected] C:\temp 
> hg --version 
Mercurial Distributed SCM (version 1.5) 

Copyright (C) 2005-2010 Matt Mackall <[email protected]> and others 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
[email protected] C:\temp 
> python -V 
Python 2.6.2 

Czy ktoś ma klonowanie działające w systemie Windows z używanymi hardlinkami lub czy nie jest obsługiwane? Zauważyłem, że instalator TortoiseHg jest wyposażony w instalację Pythona 2.6. Zauważyłem również, że ma on swój własny plik wykonywalny Hg (który również wypróbowałem i uzyskałem takie same wyniki). Czy instalacja TortoiseHg i Mercurial może powodować problemy?

+0

Czy możliwe jest również, że transakcja repo musi mieć określoną wielkość, zanim zastosuje się klonowanie z twardym łączem? –

+0

nie, nie ma sprawdzania rozmiaru. – tonfa

+2

odpowiedział tutaj: http://kiln.stackexchange.com/questions/986/how-to-get-hardlink-cloning-on-windows – tonfa

Odpowiedz

9

Tak, dostałeś odpowiedź: hardlinking jest w repozytorium (.hg), a nie w katalogu roboczym. Zatem jeśli utworzysz klon z -U, twój klon nie zajmie dodatkowego miejsca na dysku. Nieobsługiwany klon jest świetną opcją po stronie serwera, a czasem również przydatny na komputerach. Jeśli zapomnisz -U, zawsze możesz pozbyć się działającego repo repo z hg update -r null, który aktualizuje wersję zerową, która poprzedza dodawanie jakichkolwiek plików.