code: def make_archive(name, repo, ref, destdir):
      
      output_path = os.path.join(destdir, name + '.tar.gz')
      with tmpdir() as tempdir:
          # Clone the repository to the temporary directory
          cmd_output('git', 'clone', repo, tempdir)
          cmd_output('git', 'checkout', ref, cwd=tempdir)
  
          # We don't want the '.git' directory
          # It adds a bunch of size to the archive and we don't use it at
          # runtime
          rmtree(os.path.join(tempdir, '.git'))
  
          with tarfile.open(output_path, 'w|gz') as tf:
              tf.add(tempdir, name)
  
      return output_path
docs: Makes an archive of a repository in the given destdir.
  
      :param text name: Name to give the archive.  For instance foo.  The file
      that is created will be called foo.tar.gz.
      :param text repo: Repository to clone.
      :param text ref: Tag/SHA/branch to check out.
      :param text destdir: Directory to place archives in.