Skip to content
  • Gregory Szorc's avatar
    patch: make extract() a context manager (API) · 5537d8f5e989
    Gregory Szorc authored
    Previously, this function was creating a temporary file and relying
    on callers to unlink it. Yuck.
    
    We convert the function to a context manager and tie the lifetime of
    the temporary file to that of the context manager. This changed
    indentation not only from the context manager, but also from the
    elination of try blocks. It was just easier to split the heart of
    extract() into its own function.
    
    The single consumer of this function has been refactored to use it as
    a context manager. Code for cleaning up the file in tryimportone()
    has also been removed.
    
    .. api::
    
       ``patch.extract()`` is now a context manager. Callers no longer have
       to worry about deleting the temporary file it creates, as the file is
       tied to the lifetime of the context manager.
    
    Differential Revision: https://phab.mercurial-scm.org/D3306
    5537d8f5e989