a —+«b ã@s®dZddlmZddlZddlZddlmZddlmZddl m Z m Z m Z m Z ddlmZmZiZe  e¡ZdZed ged ƒejd dd d „ƒZdd„Zdd„Zdd„ZdS)z-recreates hardlinks between repository clonesé)Úabsolute_importN)Ú_)Úopen)ÚerrorÚhgÚ registrarÚutil)Ú stringutilÚurlutilsships-with-hg-coreórelinks[ORIGIN])Z helpcategoryc KsNt td¡rt td¡s&t tdƒ¡‚|dur.linkfilterspruningr$r%rr(ónot linkable: %s r)s,pruned down to %d probably relinkable files ) r.rr+r,rr2Údebugr5rBr6r7r) rrrCrrErr8r9Úfnr?ZsrcpathÚtgtrDrrr r|s*ÿ  ÿrc Cs`dd„}d}d}d}|jtdƒtdƒt|ƒd}d} |D]þ\} } | d7} tj || ¡} tj || ¡} t| d ƒ}t| d ƒ}| |¡}|r¦| |¡}||kršq¦| |¡}q‚| ¡| ¡|rÊ|  d | ¡q8z,|| | ƒ|j | | d |d7}|| 7}Wq8t y4}z$|  d | t  |¡f¡WYd}~q8d}~00q8| ¡| td ƒ|t |¡f¡dS)NcSsT|d}t ||¡zt ||¡Wn tyDt ||¡‚Yn0t |¡dS)Ns.bak)r,ÚrenamerZoslinkr@Úremove)rrCZbakrrr Ú relinkfile¦s   zdo_relink..relinkfileirs relinkingr$r%r(srbrFr)s%s: %s s!relinked %d files (%s reclaimed) )r.rr+r,rr2rÚreadÚcloserGr6r@Úwarnr Z forcebytestrr7rrZ bytecount)rrCÚfilesrrLZCHUNKLENZrelinkedZ savedbytesr8r9ÚfZszÚsourcerIZsfpZdfpZsinZdinÚinstrrr r¥sL ÿ        0 ÿÿr)N)Ú__doc__Z __future__rr,r1Zmercurial.i18nrZmercurial.pycompatrZ mercurialrrrrZmercurial.utilsr r ZcmdtableZcommandZ testedwithZCATEGORY_MAINTENANCEr!rrrrrrr Ús"    ÿ 1$)