[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.15.208.206: ~ $
#!/usr/bin/python

# This command is a simple remote-helper, that is used both as a
# testcase for the remote-helper functionality, and as an example to
# show remote-helper authors one possible implementation.
#
# This is a Git <-> Git importer/exporter, that simply uses git
# fast-import and git fast-export to consume and produce fast-import
# streams.
#
# To understand better the way things work, one can activate debug
# traces by setting (to any value) the environment variables
# GIT_TRANSPORT_HELPER_DEBUG and GIT_DEBUG_TESTGIT, to see messages
# from the transport-helper side, or from this example remote-helper.

# hashlib is only available in python >= 2.5
try:
    import hashlib
    _digest = hashlib.sha1
except ImportError:
    import sha
    _digest = sha.new
import sys
import os
import time
sys.path.insert(0, os.getenv("GITPYTHONLIB","/usr/lib/python2.7/site-packages"))

from git_remote_helpers.util import die, debug, warn
from git_remote_helpers.git.repo import GitRepo
from git_remote_helpers.git.exporter import GitExporter
from git_remote_helpers.git.importer import GitImporter
from git_remote_helpers.git.non_local import NonLocalGit

if sys.hexversion < 0x02000000:
    # string.encode() is the limiter
    sys.stderr.write("git-remote-testgit: requires Python 2.0 or later.\n")
    sys.exit(1)


def encode_filepath(path):
    """Encodes a Unicode file path to a byte string.

    On Python 2 this is a no-op; on Python 3 we encode the string as
    suggested by [1] which allows an exact round-trip from the command line
    to the filesystem.

    [1] http://docs.python.org/3/c-api/unicode.html#file-system-encoding

    """
    if sys.hexversion < 0x03000000:
        return path
    return path.encode(sys.getfilesystemencoding(), 'surrogateescape')


def get_repo(alias, url):
    """Returns a git repository object initialized for usage.
    """

    repo = GitRepo(url)
    repo.get_revs()
    repo.get_head()

    hasher = _digest()
    hasher.update(encode_filepath(repo.path))
    repo.hash = hasher.hexdigest()

    repo.get_base_path = lambda base: os.path.join(
        base, 'info', 'fast-import', repo.hash)

    prefix = 'refs/testgit/%s/' % alias
    debug("prefix: '%s'", prefix)

    repo.gitdir = os.environ["GIT_DIR"]
    repo.alias = alias
    repo.prefix = prefix

    repo.exporter = GitExporter(repo)
    repo.importer = GitImporter(repo)
    repo.non_local = NonLocalGit(repo)

    return repo


def local_repo(repo, path):
    """Returns a git repository object initalized for usage.
    """

    local = GitRepo(path)

    local.non_local = None
    local.gitdir = repo.gitdir
    local.alias = repo.alias
    local.prefix = repo.prefix
    local.hash = repo.hash
    local.get_base_path = repo.get_base_path
    local.exporter = GitExporter(local)
    local.importer = GitImporter(local)

    return local


def do_capabilities(repo, args):
    """Prints the supported capabilities.
    """

    print("import")
    print("export")
    print("refspec refs/heads/*:%s*" % repo.prefix)

    dirname = repo.get_base_path(repo.gitdir)

    if not os.path.exists(dirname):
        os.makedirs(dirname)

    path = os.path.join(dirname, 'git.marks')

    print("*export-marks %s" % path)
    if os.path.exists(path):
        print("*import-marks %s" % path)

    print('') # end capabilities


def do_list(repo, args):
    """Lists all known references.

    Bug: This will always set the remote head to master for non-local
    repositories, since we have no way of determining what the remote
    head is at clone time.
    """

    for ref in repo.revs:
        debug("? refs/heads/%s", ref)
        print("? refs/heads/%s" % ref)

    if repo.head:
        debug("@refs/heads/%s HEAD" % repo.head)
        print("@refs/heads/%s HEAD" % repo.head)
    else:
        debug("@refs/heads/master HEAD")
        print("@refs/heads/master HEAD")

    print('') # end list


def update_local_repo(repo):
    """Updates (or clones) a local repo.
    """

    if repo.local:
        return repo

    path = repo.non_local.clone(repo.gitdir)
    repo.non_local.update(repo.gitdir)
    repo = local_repo(repo, path)
    return repo


def do_import(repo, args):
    """Exports a fast-import stream from testgit for git to import.
    """

    if len(args) != 1:
        die("Import needs exactly one ref")

    if not repo.gitdir:
        die("Need gitdir to import")

    ref = args[0]
    refs = [ref]

    while True:
        line = sys.stdin.readline().decode()
        if line == '\n':
            break
        if not line.startswith('import '):
            die("Expected import line.")

        # strip of leading 'import '
        ref = line[7:].strip()
        refs.append(ref)

    print("feature done")

    if os.environ.get("GIT_REMOTE_TESTGIT_FAILURE"):
        die('Told to fail')

    repo = update_local_repo(repo)
    repo.exporter.export_repo(repo.gitdir, refs)

    print("done")


def do_export(repo, args):
    """Imports a fast-import stream from git to testgit.
    """

    if not repo.gitdir:
        die("Need gitdir to export")

    if os.environ.get("GIT_REMOTE_TESTGIT_FAILURE"):
        die('Told to fail')

    update_local_repo(repo)
    changed = repo.importer.do_import(repo.gitdir)

    if not repo.local:
        repo.non_local.push(repo.gitdir)

    for ref in changed:
        print("ok %s" % ref)
    print('')


COMMANDS = {
    'capabilities': do_capabilities,
    'list': do_list,
    'import': do_import,
    'export': do_export,
}


def sanitize(value):
    """Cleans up the url.
    """

    if value.startswith('testgit::'):
        value = value[9:]

    return value


def read_one_line(repo):
    """Reads and processes one command.
    """

    sleepy = os.environ.get("GIT_REMOTE_TESTGIT_SLEEPY")
    if sleepy:
        debug("Sleeping %d sec before readline" % int(sleepy))
        time.sleep(int(sleepy))

    line = sys.stdin.readline()

    cmdline = line.decode()

    if not cmdline:
        warn("Unexpected EOF")
        return False

    cmdline = cmdline.strip().split()
    if not cmdline:
        # Blank line means we're about to quit
        return False

    cmd = cmdline.pop(0)
    debug("Got command '%s' with args '%s'", cmd, ' '.join(cmdline))

    if cmd not in COMMANDS:
        die("Unknown command, %s", cmd)

    func = COMMANDS[cmd]
    func(repo, cmdline)
    sys.stdout.flush()

    return True


def main(args):
    """Starts a new remote helper for the specified repository.
    """

    if len(args) != 3:
        die("Expecting exactly three arguments.")
        sys.exit(1)

    if os.getenv("GIT_DEBUG_TESTGIT"):
        import git_remote_helpers.util
        git_remote_helpers.util.DEBUG = True

    alias = sanitize(args[1])
    url = sanitize(args[2])

    if not alias.isalnum():
        warn("non-alnum alias '%s'", alias)
        alias = "tmp"

    args[1] = alias
    args[2] = url

    repo = get_repo(alias, url)

    debug("Got arguments %s", args[1:])

    more = True

    # Use binary mode since Python 3 does not permit unbuffered I/O in text
    # mode.  Unbuffered I/O is required to avoid data that should be going
    # to git-fast-import after an "export" command getting caught in our
    # stdin buffer instead.
    sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0)
    while (more):
        more = read_one_line(repo)

if __name__ == '__main__':
    sys.exit(main(sys.argv))

Filemanager

Name Type Size Permission Actions
mergetools Folder 0755
.git-add.40009 File 1.46 MB 0755
.git-annotate.40009 File 1.46 MB 0755
.git-apply.40009 File 1.46 MB 0755
.git-archive.40009 File 1.46 MB 0755
.git-bisect--helper.40009 File 1.46 MB 0755
.git-blame.40009 File 1.46 MB 0755
.git-branch.40009 File 1.46 MB 0755
.git-bundle.40009 File 1.46 MB 0755
.git-cat-file.40009 File 1.46 MB 0755
.git-check-attr.40009 File 1.46 MB 0755
.git-check-ignore.40009 File 1.46 MB 0755
.git-check-ref-format.40009 File 1.46 MB 0755
.git-checkout-index.40009 File 1.46 MB 0755
.git-checkout.40009 File 1.46 MB 0755
.git-cherry-pick.40009 File 1.46 MB 0755
.git-cherry.40009 File 1.46 MB 0755
.git-clean.40009 File 1.46 MB 0755
.git-clone.40009 File 1.46 MB 0755
.git-column.40009 File 1.46 MB 0755
.git-commit-tree.40009 File 1.46 MB 0755
.git-commit.40009 File 1.46 MB 0755
.git-config.40009 File 1.46 MB 0755
.git-count-objects.40009 File 1.46 MB 0755
.git-credential.40009 File 1.46 MB 0755
.git-describe.40009 File 1.46 MB 0755
.git-diff-files.40009 File 1.46 MB 0755
.git-diff-index.40009 File 1.46 MB 0755
.git-diff-tree.40009 File 1.46 MB 0755
.git-diff.40009 File 1.46 MB 0755
.git-fast-export.40009 File 1.46 MB 0755
.git-fetch-pack.40009 File 1.46 MB 0755
.git-fetch.40009 File 1.46 MB 0755
.git-fmt-merge-msg.40009 File 1.46 MB 0755
.git-for-each-ref.40009 File 1.46 MB 0755
.git-format-patch.40009 File 1.46 MB 0755
.git-fsck-objects.40009 File 1.46 MB 0755
.git-fsck.40009 File 1.46 MB 0755
.git-gc.40009 File 1.46 MB 0755
.git-get-tar-commit-id.40009 File 1.46 MB 0755
.git-grep.40009 File 1.46 MB 0755
.git-hash-object.40009 File 1.46 MB 0755
.git-help.40009 File 1.46 MB 0755
.git-index-pack.40009 File 1.46 MB 0755
.git-init-db.40009 File 1.46 MB 0755
.git-init.40009 File 1.46 MB 0755
.git-log.40009 File 1.46 MB 0755
.git-ls-files.40009 File 1.46 MB 0755
.git-ls-remote.40009 File 1.46 MB 0755
.git-ls-tree.40009 File 1.46 MB 0755
.git-mailinfo.40009 File 1.46 MB 0755
.git-mailsplit.40009 File 1.46 MB 0755
.git-merge-base.40009 File 1.46 MB 0755
.git-merge-file.40009 File 1.46 MB 0755
.git-merge-index.40009 File 1.46 MB 0755
.git-merge-ours.40009 File 1.46 MB 0755
.git-merge-recursive.40009 File 1.46 MB 0755
.git-merge-subtree.40009 File 1.46 MB 0755
.git-merge-tree.40009 File 1.46 MB 0755
.git-merge.40009 File 1.46 MB 0755
.git-mktag.40009 File 1.46 MB 0755
.git-mktree.40009 File 1.46 MB 0755
.git-mv.40009 File 1.46 MB 0755
.git-name-rev.40009 File 1.46 MB 0755
.git-notes.40009 File 1.46 MB 0755
.git-pack-objects.40009 File 1.46 MB 0755
.git-pack-redundant.40009 File 1.46 MB 0755
.git-pack-refs.40009 File 1.46 MB 0755
.git-patch-id.40009 File 1.46 MB 0755
.git-peek-remote.40009 File 1.46 MB 0755
.git-prune-packed.40009 File 1.46 MB 0755
.git-prune.40009 File 1.46 MB 0755
.git-push.40009 File 1.46 MB 0755
.git-read-tree.40009 File 1.46 MB 0755
.git-receive-pack.40009 File 1.46 MB 0755
.git-reflog.40009 File 1.46 MB 0755
.git-remote-ext.40009 File 1.46 MB 0755
.git-remote-fd.40009 File 1.46 MB 0755
.git-remote-ftps.40009 File 820.52 KB 0755
.git-remote-http.40009 File 820.52 KB 0755
.git-remote-https.40009 File 820.52 KB 0755
.git-remote.40009 File 1.46 MB 0755
.git-replace.40009 File 1.46 MB 0755
.git-repo-config.40009 File 1.46 MB 0755
.git-rerere.40009 File 1.46 MB 0755
.git-reset.40009 File 1.46 MB 0755
.git-rev-list.40009 File 1.46 MB 0755
.git-rev-parse.40009 File 1.46 MB 0755
.git-revert.40009 File 1.46 MB 0755
.git-rm.40009 File 1.46 MB 0755
.git-send-pack.40009 File 1.46 MB 0755
.git-shell.40009 File 717.95 KB 0755
.git-shortlog.40009 File 1.46 MB 0755
.git-show-branch.40009 File 1.46 MB 0755
.git-show-ref.40009 File 1.46 MB 0755
.git-show.40009 File 1.46 MB 0755
.git-stage.40009 File 1.46 MB 0755
.git-status.40009 File 1.46 MB 0755
.git-stripspace.40009 File 1.46 MB 0755
.git-submodule--helper.40009 File 1.46 MB 0755
.git-symbolic-ref.40009 File 1.46 MB 0755
.git-tag.40009 File 1.46 MB 0755
.git-tar-tree.40009 File 1.46 MB 0755
.git-unpack-file.40009 File 1.46 MB 0755
.git-unpack-objects.40009 File 1.46 MB 0755
.git-update-index.40009 File 1.46 MB 0755
.git-update-ref.40009 File 1.46 MB 0755
.git-update-server-info.40009 File 1.46 MB 0755
.git-upload-archive.40009 File 1.46 MB 0755
.git-upload-pack.40009 File 791.44 KB 0755
.git-var.40009 File 1.46 MB 0755
.git-verify-pack.40009 File 1.46 MB 0755
.git-verify-tag.40009 File 1.46 MB 0755
.git-whatchanged.40009 File 1.46 MB 0755
.git-write-tree.40009 File 1.46 MB 0755
.git.40009 File 1.46 MB 0755
git File 1.46 MB 0755
git-add File 1.46 MB 0755
git-add--interactive File 35.8 KB 0755
git-am File 21.84 KB 0755
git-annotate File 1.46 MB 0755
git-apply File 1.46 MB 0755
git-archive File 1.46 MB 0755
git-bisect File 11.71 KB 0755
git-bisect--helper File 1.46 MB 0755
git-blame File 1.46 MB 0755
git-branch File 1.46 MB 0755
git-bundle File 1.46 MB 0755
git-cat-file File 1.46 MB 0755
git-check-attr File 1.46 MB 0755
git-check-ignore File 1.46 MB 0755
git-check-ref-format File 1.46 MB 0755
git-checkout File 1.46 MB 0755
git-checkout-index File 1.46 MB 0755
git-cherry File 1.46 MB 0755
git-cherry-pick File 1.46 MB 0755
git-clean File 1.46 MB 0755
git-clone File 1.46 MB 0755
git-column File 1.46 MB 0755
git-commit File 1.46 MB 0755
git-commit-tree File 1.46 MB 0755
git-config File 1.46 MB 0755
git-count-objects File 1.46 MB 0755
git-credential File 1.46 MB 0755
git-credential-cache File 717.83 KB 0755
git-credential-cache--daemon File 730.32 KB 0755
git-credential-store File 726.01 KB 0755
git-describe File 1.46 MB 0755
git-diff File 1.46 MB 0755
git-diff-files File 1.46 MB 0755
git-diff-index File 1.46 MB 0755
git-diff-tree File 1.46 MB 0755
git-difftool File 13.41 KB 0755
git-difftool--helper File 1.86 KB 0755
git-fast-export File 1.46 MB 0755
git-fast-import File 754.91 KB 0755
git-fetch File 1.46 MB 0755
git-fetch-pack File 1.46 MB 0755
git-filter-branch File 11.33 KB 0755
git-fmt-merge-msg File 1.46 MB 0755
git-for-each-ref File 1.46 MB 0755
git-format-patch File 1.46 MB 0755
git-fsck File 1.46 MB 0755
git-fsck-objects File 1.46 MB 0755
git-gc File 1.46 MB 0755
git-get-tar-commit-id File 1.46 MB 0755
git-grep File 1.46 MB 0755
git-hash-object File 1.46 MB 0755
git-help File 1.46 MB 0755
git-http-backend File 730.63 KB 0755
git-http-fetch File 816.54 KB 0755
git-http-push File 832.82 KB 0755
git-imap-send File 738.79 KB 0755
git-index-pack File 1.46 MB 0755
git-init File 1.46 MB 0755
git-init-db File 1.46 MB 0755
git-log File 1.46 MB 0755
git-lost-found File 554 B 0755
git-ls-files File 1.46 MB 0755
git-ls-remote File 1.46 MB 0755
git-ls-tree File 1.46 MB 0755
git-mailinfo File 1.46 MB 0755
git-mailsplit File 1.46 MB 0755
git-merge File 1.46 MB 0755
git-merge-base File 1.46 MB 0755
git-merge-file File 1.46 MB 0755
git-merge-index File 1.46 MB 0755
git-merge-octopus File 2.16 KB 0755
git-merge-one-file File 3.4 KB 0755
git-merge-ours File 1.46 MB 0755
git-merge-recursive File 1.46 MB 0755
git-merge-resolve File 944 B 0755
git-merge-subtree File 1.46 MB 0755
git-merge-tree File 1.46 MB 0755
git-mergetool File 8.18 KB 0755
git-mergetool--lib File 7.6 KB 0644
git-mktag File 1.46 MB 0755
git-mktree File 1.46 MB 0755
git-mv File 1.46 MB 0755
git-name-rev File 1.46 MB 0755
git-notes File 1.46 MB 0755
git-pack-objects File 1.46 MB 0755
git-pack-redundant File 1.46 MB 0755
git-pack-refs File 1.46 MB 0755
git-parse-remote File 2.13 KB 0644
git-patch-id File 1.46 MB 0755
git-peek-remote File 1.46 MB 0755
git-prune File 1.46 MB 0755
git-prune-packed File 1.46 MB 0755
git-pull File 7.68 KB 0755
git-push File 1.46 MB 0755
git-quiltimport File 3.27 KB 0755
git-read-tree File 1.46 MB 0755
git-rebase File 13.26 KB 0755
git-rebase--am File 1.43 KB 0644
git-rebase--interactive File 25.09 KB 0644
git-rebase--merge File 3.01 KB 0644
git-receive-pack File 1.46 MB 0755
git-reflog File 1.46 MB 0755
git-relink File 4.09 KB 0755
git-remote File 1.46 MB 0755
git-remote-ext File 1.46 MB 0755
git-remote-fd File 1.46 MB 0755
git-remote-ftp File 824.59 KB 0755
git-remote-ftps File 824.59 KB 0755
git-remote-http File 824.59 KB 0755
git-remote-https File 824.59 KB 0755
git-remote-testpy File 7.26 KB 0755
git-repack File 4.87 KB 0755
git-replace File 1.46 MB 0755
git-repo-config File 1.46 MB 0755
git-request-pull File 3.57 KB 0755
git-rerere File 1.46 MB 0755
git-reset File 1.46 MB 0755
git-rev-list File 1.46 MB 0755
git-rev-parse File 1.46 MB 0755
git-revert File 1.46 MB 0755
git-rm File 1.46 MB 0755
git-send-pack File 1.46 MB 0755
git-sh-i18n File 1.92 KB 0644
git-sh-i18n--envsubst File 24.16 KB 0755
git-sh-setup File 6.32 KB 0644
git-shell File 722.04 KB 0755
git-shortlog File 1.46 MB 0755
git-show File 1.46 MB 0755
git-show-branch File 1.46 MB 0755
git-show-index File 717.8 KB 0755
git-show-ref File 1.46 MB 0755
git-stage File 1.46 MB 0755
git-stash File 12.61 KB 0755
git-status File 1.46 MB 0755
git-stripspace File 1.46 MB 0755
git-submodule File 30.31 KB 0755
git-submodule--helper File 1.46 MB 0755
git-subtree File 15.08 KB 0755
git-symbolic-ref File 1.46 MB 0755
git-tag File 1.46 MB 0755
git-tar-tree File 1.46 MB 0755
git-unpack-file File 1.46 MB 0755
git-unpack-objects File 1.46 MB 0755
git-update-index File 1.46 MB 0755
git-update-ref File 1.46 MB 0755
git-update-server-info File 1.46 MB 0755
git-upload-archive File 1.46 MB 0755
git-upload-pack File 795.48 KB 0755
git-var File 1.46 MB 0755
git-verify-pack File 1.46 MB 0755
git-verify-tag File 1.46 MB 0755
git-web--browse File 4.12 KB 0755
git-whatchanged File 1.46 MB 0755
git-write-tree File 1.46 MB 0755