
    c0                     X   d dl Z d dlmZ d dlmZmZmZ ddlmZ ej	        
                    g d           	 d dlZd dlZd dlZd dlZej        j        Zej        Zej        Zej        Zej         	 d dlmZ n# e$ r	 d dlmZ Y nw xY wn# e$ r Y nw xY wdZ G d	 d
ej                  ZdS )    N)_)demandimporterrorutil   )common)zbreezy.transactionszbreezy.urlutilsElementPath)
NoSuchFile)filesymlinkc                   l     e Zd ZdZd fd	Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Z xZS )
bzr_sourcez>Reads Bazaar repositories by using the Bazaar Python librariesNc                 T   t          t          |                               ||||           t          j                            t          j                            |d                    s$t          j        t          d          |z            	 t           nB# t          $ r5 t          j        t          d          t          d          dz  z             w xY wt          j        |          }|                     |           	 t          j                            |                                          }|                                | _        n7# t(          j        $ r% t          j        t          d          |z            w xY wi | _        |                    dd          | _        d S )	N)revss   .bzrs)   %s does not look like a Bazaar repositorys"   Bazaar modules could not be loadeds     (try installing the %s package)s   bzrs   converts   bzr.saverev)superr   __init__ospathexistsjoinr   NoRepor   bzrdir	NameErrorr   abspath_checkrepotypeBzrDiropendecodeopen_repository
sourcerepoerrorsNoRepositoryPresent
_parentids
configbool_saverev)selfuirepotyper   r   bzr_dir	__class__s         3/usr/lib/python3/dist-packages/hgext/convert/bzr.pyr   zbzr_source.__init__;   s   j$((Xt$(GGGw~~bgll499:: 	->??$F  	QFF 	Q 	Q 	Q-"G H H !"E F F O!P Q Q Q	Q |D!!D!!!	m((77G%5577DOO) 	 	 	->??$F  	 j.AAs   B ?CA
E 4Fc                 4   	 t           j                            |                                          d         }	 |                    d          }|j        }n7# t          j        t          j        f$ r d }|	                                }Y nw xY w|M|j
        j        j        |j
        j        j        k    r+| j                            t          d                     d S d S d S # t           $ r+ | j                            t          d                     Y d S w xY w)Nr   F)recommend_upgradesa   warning: lightweight checkouts may cause conversion failures, try with a regular branch instead.
s(   bzr source type could not be determined
)r   r   open_containingr   open_workingtreebranchr!   NoWorkingTreeNotLocalUrlopen_branch
controldirroot_transportbaser'   warnr   	Exceptionnote)r&   r   dirtreer0   s        r+   r   zbzr_source._checkrepotypeV   sD   	J-//>>qAC+++e+DD(&*<= + + +**+  O27$389 9 -     	 ! 9 9  	J 	J 	JGLLGHHIIIIII	Js5   7C" A C" 1B	C" BAC" "1DDc                 8    | j                                          dS )a  Before the conversion begins, acquire a read lock
        for all the operations that might need it. Fortunately
        read locks don't block other reads or writes to the
        repository, so this shouldn't have any impact on the usage of
        the source repository.

        The alternative would be locking on every operation that
        needs locks (there are currently two: getting the file and
        getting the parent map) and releasing immediately after,
        but this approach can take even 40% longer.N)r    	lock_readr&   s    r+   beforezbzr_source.beforep   s     	!!#####    c                 8    | j                                          d S N)r    unlockr>   s    r+   afterzbzr_source.after}   s         r@   c                 8    | j                             d          S )NT)using)r    find_branchesr>   s    r+   _bzrbrancheszbzr_source._bzrbranches   s    ,,4,888r@   c                     | j         s,t          d |                                 D                       }nd }|                                 D ]s}	 | j         d                                         }t          j                            |          }|                    |          }n# t          j	        $ r Y nw xY w|j
        }t|/t          j        t          d          | j         d         z            |g}d |D             }|S )Nc                 6    g | ]}|                                 S  )last_revision).0bs     r+   
<listcomp>z'bzr_source.getheads.<locals>.<listcomp>   s"    KKK!AOO--KKKr@   r   s   %s is not a valid revisionc                     g | ]
}|d k    |S )s   null:rK   )rM   hs     r+   rO   z'bzr_source.getheads.<locals>.<listcomp>   s    333qQ(]]]]]r@   )r   sortedrH   r   revisionspecRevisionSpecfrom_string
in_historyr!   BzrErrorrev_idr   Abortr   )r&   headsrevidr0   revspecrinfos          r+   getheadszbzr_source.getheads   s   y 	KKt7H7H7J7JKKKLLEEE++-- $ $"il1133G$1==gFFA<<//DD   D}k344ty|C   GE33E333s   AB!!B32B3c                    |                                 }| j                            |          }	 |                    |          }n# t          $ r Y dS w xY w|t
          vrdS | j        |                                |f         }|dk    rS|                    |          }|&t          j
        t          d          ||fz            |                                |fS |                    |          }|                                |fS )N)NNr   s   %s.%s symlink has no target)r   r    revision_treekindr
   supportedkinds
_modecacheencodeget_symlink_targetr   rY   r   get_fileread)r&   namerevrevtreerb   modetargetsios           r+   getfilezbzr_source.getfile   s   {{}}///44	<<%%DD 	 	 	::	~%%:s349//55F~k455sC   ==??D((""4((C88::t##s   A 
AAc                 f   |r!t          j        t          d                    i | _        | j                            |          | _        | j                            |          }| j                            |d                   }| 	                    | j        |          \  }}||t                      fS )Ns(   convert from cvs does not support --fullr   )r   rY   r   rd   r    ra   _revtreer#   pop_gettreechangesset)r&   versionfull	parentidsprevtreefileschangess          r+   
getchangeszbzr_source.getchanges   s     	N+a KLLMMM55g>>O''00	?001>>--dmXFFwgsuu$$r@   c           	         | j                             |          }|j        sg }t          j        f| j        |<   n$|                     |j                  }|| j        |<   |j                            dd          }|dk    rd}t          j
        |d|j        |j         fz  |                     |j                  |                     |j                  |                    d          || j                  S )Nzbranch-nickdefaulttrunks   %d %dutf8)parentsdateauthordescr0   rj   saverev)r    get_revision
parent_idsrevisionNULL_REVISIONr#   _filterghosts
propertiesgetr   commit	timestamptimezonerecode	committermessagere   r%   )r&   ru   rj   r   r0   s        r+   	getcommitzbzr_source.getcommit   s    o**733~ 	/G(0(>'@DOG$$((88G'.DOG$##M9==WF}S]S\M::;;s}--S[))==((M
 
 
 	
r@   c                     i }|                                  D ]e}|                                si c S |j                                        }|                                D ]\  }}|||                     |          <   f|S rB   )rH   supports_tagstagsget_tag_dictitemsr   )r&   bytetagsr0   tagdictri   rj   s         r+   gettagszbzr_source.gettags   s    '')) 	2 	2F'')) 			k..00G$]]__ 2 2	c.1T**++2r@   c                    i | _         | j                            |          }|| j        |         |         }nt          j        }| j                            |          }d |                     ||          d         D             }|S )Nc                     g | ]
}|d          S )r   rK   rM   es     r+   rO   z.bzr_source.getchangedfiles.<locals>.<listcomp>   s    LLLA1Q4LLLr@   r   )rd   r    ra   r#   r   r   rs   )r&   rj   icurtreeparentidrx   rz   s          r+   getchangedfileszbzr_source.getchangedfiles   s    ///44=s+A.HH  -H?00::LL!5!5gx!H!H!KLLLr@   c                    |j         }g }i }t                      }	 |j        }n# t          $ r
 |j        }Y nw xY wd }t          |                    |          |d          }	|	D ]a}
|
j        }|
j        }|
j	        }|d         dk    s|d         dk    r1|d         dk    rX|d         dvr0|
                    |                     |d                   |f           |d         dk    rd |vr
|d         |d         k    }|                    |d                   }|                    |          D ]\  }}|j        dk    r|                     |d         d	z   |z             }||v r7|                    |           |sO|                     |d         d	z   |z             }|
                    ||f           |
                    ||f           |j	        rd
p|j        dk    odpd}|| j        ||f<   |||<   Ȑ|\  }}||                     |          }||                     |          }|                    |p|           ||
                    ||f           |r"||k    r|||<   |
                    ||f           d ||fD             \  }}|rd
p	|dk    rdpd}|| j        ||f<   |
                    ||f           c||fS )Nc                 :    | j         d         p| j         d         pdS )Nr   r    )r   )cs    r+   keyz'bzr_source._gettreechanges.<locals>.key   s    6!9/q	/R/r@   T)r   reverser   r   r   	directory)Nr   /   xr      sr@   c                     g | ]
}|d          S )r   rK   r   s     r+   rO   z.bzr_source._gettreechanges.<locals>.<listcomp>K  s    AAA!AAAr@      l)_revision_idrt   root_inventoryAttributeError	inventoryrR   iter_changesr   rb   
executableappendr   path2iditer_entriesaddrd   )r&   currentoriginr[   rz   renamesseenr   r   
curchangeschangepathsrb   r   renamingsubdirri   entryfrompathtopathrl   r   s                         r+   rs   zbzr_source._gettreechanges   s   $uu	)-II 	) 	) 	)(III	)	0 	0 	0   ((
 
 


 ! L	, L	,FKE;D*JQx3%(c// Aw+%%7"555 NNDKKa$9$95#ABBB7k))d%.?.?$Qx583H '..uQx88F'0'='=f'E'E 3 3e :44$#';;uQx#~/D#E#E#t++ %***' %$!%U1X^d-B!C!C%'8999777 #-6$ # %
i 7 @D#" 
 <@8*2  !LD&{{4((!V,,HHT^V$$$~e}---  ."&e}---  BAtZ.@AAAD*'4OTY->-G4OCD/3DOVUO,NNFE?++++s   # 77c                 r    | j                             |          t          fd|D                       }|S )zqFilters out ghost revisions which hg does not support, see
        <http://bazaar-vcs.org/GhostRevision>
        c                     g | ]}|v |	S rK   rK   )rM   parent	parentmaps     r+   rO   z,bzr_source._filterghosts.<locals>.<listcomp>W  s#    IIIFVy5H5H5H5H5Hr@   )r    get_parent_maptuple)r&   idsr   r   s      @r+   r   zbzr_source._filterghostsR  sA     O22377	IIIIcIIIJJr@   rB   )__name__
__module____qualname____doc__r   r   r?   rD   rH   r_   ro   r{   r   r   r   rs   r   __classcell__)r*   s   @r+   r   r   8   s       HHB B B B B B6J J J4$ $ $! ! !9 9 9  .$ $ $.
% 
% 
%
 
 
.    e  e  e N      r@   r   )r   mercurial.i18nr   	mercurialr   r   r   r   r   IGNORESupdatebreezy.bzr.bzrdirbreezybreezy.errorsbreezy.revisionbreezy.revisionspecbzrr   r!   r   rS   rT   breezy.transportr
   ImportErrorrc   converter_sourcer   rK   r@   r+   <module>r      s   
			               
              	ZF]FH&L-/////// - - -,,,,,,,,- 	 	 	D	 %` ` ` ` `( ` ` ` ` `s5   8B
 1A8 7B
 8BB
 BB
 
BB