tests/list-tree.py
author Pulkit Goyal <7895pulkit@gmail.com>
Wed, 30 Sep 2020 15:46:54 +0530
changeset 45620 ad984583969a
parent 43076 2372284d9457
child 48966 6000f5b25c9b
permissions -rw-r--r--
merge: if DELETED_CHANGED and GET are in actions, choose DELETED_CHANGED ACTION_GET represents that either the file is created on remote or it's newer on the remote side. However, since we have a ACTION_DELETE_CHANGED too, it means the file is not present locally and ACTION_GET is representing that file was created on remote. Having both ACTION_GET and ACTION_DELETED_CHANGED is conflicting because one says that file was created on remote and other says file has delete-changed conflicts. Let's choose ACTION_DELETED_CHANGED which will result in conflicts and make user choose the right way forward.

from __future__ import (
    absolute_import,
    print_function,
)

import argparse
import os

ap = argparse.ArgumentParser()
ap.add_argument('path', nargs='+')
opts = ap.parse_args()


def gather():
    for p in opts.path:
        if not os.path.exists(p):
            return
        if os.path.isdir(p):
            yield p + os.path.sep
            for dirpath, dirs, files in os.walk(p):
                for d in dirs:
                    yield os.path.join(dirpath, d) + os.path.sep
                for f in files:
                    yield os.path.join(dirpath, f)
        else:
            yield p


print('\n'.join(sorted(gather(), key=lambda x: x.replace(os.path.sep, '/'))))