Example #1
0
def dirty(repo, filepath):
    if not hasattr(repo, '__getitem__'):
        vim_throw('statuns', repo.path)
    m=match.match(None, None, [filepath], exact=True)
    status=repo.status(match=m, unknown=True)
    if any(status[:-2]):
        vim.command('let r=1')
Example #2
0
def update(repo, rev='tip', force=False):
    if not hasattr(repo, '__getitem__'):
        vim_throw('upduns', repo.path)
    rev = g_cs(repo, rev).hex()
    args = [repo.ui, repo, rev]
    kwargs = {'clean': bool(force)}
    run_in_dir(repo.root, commands.update, *args, **kwargs)
Example #3
0
def dirty(repo, filepath):
    if not hasattr(repo, '__getitem__'):
        vim_throw('statuns', repo.path)
    m = match.match(None, None, [filepath], exact=True)
    status = repo.status(match=m, unknown=True)
    if any(status[:-2]):
        vim.command('let r=1')
Example #4
0
def update(repo, rev='tip', force=False):
    if not hasattr(repo, '__getitem__'):
        vim_throw('upduns', repo.path)
    rev=g_cs(repo, rev).hex()
    args=[repo.ui, repo, rev]
    kwargs={'clean': bool(force)}
    run_in_dir(repo.root, commands.update, *args, **kwargs)
Example #5
0
def get_status(repo,
               rev1=None,
               rev2=None,
               files=None,
               clean=None,
               ignored=None):
    if rev1 is None and rev2 is None:
        rev1 = '.'
    if hasattr(repo, 'status'):
        if not files:
            m = None
        else:
            m = match.match(None, None, files, exact=True)
        status = repo.status(rev1,
                             rev2,
                             match=m,
                             clean=clean,
                             ignored=ignored,
                             unknown=True)
        return {
            'modified': status[0],
            'added': status[1],
            'removed': status[2],
            'deleted': status[3],
            'unknown': status[4],
            'ignored': status[5],
            'clean': status[6],
        }
    else:
        vim_throw('statuns', repo.path)
Example #6
0
def g_revid(repo, rev):
    try:
        if isinstance(rev, int) or isinstance(rev, long):
            return repo.branch.get_rev_id(rev)
        else:
            return RevisionSpec.from_string(rev).in_history(repo.branch).rev_id
    except (NoSuchRevision, InvalidRevisionSpec):
        vim_throw('norev', rev, repo.basedir)
Example #7
0
def g_revid(repo, rev):
    try:
        if isinstance(rev, int) or isinstance(rev, long):
            return repo.branch.get_rev_id(rev)
        else:
            return RevisionSpec.from_string(rev).in_history(repo.branch).rev_id
    except (NoSuchRevision, InvalidRevisionSpec):
        vim_throw('norev', rev, repo.basedir)
Example #8
0
def dodiff(ui, repo, rev1, rev2, files, opts):
    if not hasattr(repo, '__getitem__'):
        vim_throw('diffuns', repo.path)
    args = [ui, repo] + files
    kwargs = opts
    if rev2:
        kwargs['rev'] = [rev2]
        if rev1:
            kwargs['rev'].append(rev1)
    else:
        if rev1:
            kwargs['change'] = rev1
    run_in_dir(repo.root, commands.diff, *args, **kwargs)
Example #9
0
def dodiff(ui, repo, rev1, rev2, files, opts):
    if not hasattr(repo, '__getitem__'):
        vim_throw('diffuns', repo.path)
    args=[ui, repo]+files
    kwargs=opts
    if rev2:
        kwargs['rev']=[rev2]
        if rev1:
            kwargs['rev'].append(rev1)
    else:
        if rev1:
            kwargs['change']=rev1
    run_in_dir(repo.root, commands.diff, *args, **kwargs)
Example #10
0
def g_cs(repo, rev):
    try:
        # TODO Check this. Currently it works only in development branch
        r = repo.revparse_single(rev)
    except Exception: # FIXME be more specific
        vim_throw('norev', rev, repo.path)

    while not isinstance(r, git.Commit):
        if isinstance(r, git.Tag):
            r = repo[r.target]
        else:
            vim_throw('uresrev', repr(r), rev, repo.path)

    return r
Example #11
0
def get_branch(repo):
    try:
        ref = repo.lookup_reference('HEAD')
    except KeyError:
        vim_throw('nohead', path)

    try:
        target = ref.target
    except ValueError:
        return ''

    if isinstance(target, (str, unicode)) and target.startswith('refs/heads/'):
        return target[11:]
    else:
        return ''
Example #12
0
def get_branch(repo):
    try:
        ref = repo.lookup_reference('HEAD')
    except KeyError:
        vim_throw('nohead', path)

    try:
        target = ref.target
    except ValueError:
        return ''

    if target.startswith('refs/heads/'):
        return target[11:]
    else:
        return ''
Example #13
0
def get_status(repo, rev1=None, rev2=None, files=None, clean=None, ignored=None):
    if rev1 is None and rev2 is None:
        rev1='.'
    if hasattr(repo, 'status'):
        if not files:
            m=None
        else:
            m=match.match(None, None, files, exact=True)
        status=repo.status(rev1, rev2, match=m, clean=clean, ignored=ignored,
                           unknown=True)
        return {'modified': status[0],
                   'added': status[1],
                 'removed': status[2],
                 'deleted': status[3],
                 'unknown': status[4],
                 'ignored': status[5],
                   'clean': status[6],}
    else:
        vim_throw('statuns', repo.path)
Example #14
0
def git_hash(repo, rev):
    hggitpath = None
    hggitname = None
    for hggitname in ['hggit', 'git']:
        hggitpath = repo.ui.config('extensions', hggitname)
        if hggitpath is not None:
            break
    if hggitpath is None:
        vim_throw('nohggitc')
    import sys
    sys.path.insert(0, hggitpath)
    try:
        try:
            if hggitname == 'hggit':
                from hggit.git_handler import GitHandler
            elif hggitname == 'git':
                from git.git_handler import GitHandler
        except ImportError:
            vim_throw('nohggit')
        git = GitHandler(repo, repo.ui)
        cs = g_cs(repo, rev)
        r = git.map_git_get(cs.hex())
        if r is None:
            vim_throw('nogitrev', cs.hex(), repo.path)
        return {'git_hex': r}
    finally:
        sys.path.pop(0)
Example #15
0
def git_hash(repo, rev):
    hggitpath=None
    hggitname=None
    for hggitname in ['hggit', 'git']:
        hggitpath=repo.ui.config('extensions', hggitname)
        if hggitpath is not None:
            break
    if hggitpath is None:
        vim_throw('nohggitc')
    import sys
    sys.path.insert(0, hggitpath)
    try:
        try:
            if hggitname=='hggit':
                from hggit.git_handler import GitHandler
            elif hggitname=='git':
                from git.git_handler   import GitHandler
        except ImportError:
            vim_throw('nohggit')
        git=GitHandler(repo, repo.ui)
        cs=g_cs(repo, rev)
        r=git.map_git_get(cs.hex())
        if r is None:
            vim_throw('nogitrev', cs.hex(), repo.path)
        return {'git_hex': r}
    finally:
        sys.path.pop(0)
Example #16
0
def g_cs(repo, rev):
    if hasattr(repo, 'revparse_single'):
        try:
            # TODO Check this. Currently it works only in development branch
            r = repo.revparse_single(rev)
        except Exception: # FIXME be more specific
            vim_throw('norev', rev, repo.path)
    else:
        try:
            ref = repo.lookup_reference(rev)
            r = repo[ref.resolve().oid]
        except KeyError:
            try:
                r = repo[unicode(rev, 'utf-8')]
            except KeyError:
                vim_throw('norev', rev, repo.path)

    while not isinstance(r, git.Commit):
        if isinstance(r, git.Tag):
            r = repo[r.target]
        else:
            vim_throw('uresrev', repr(r), rev, repo.path)

    return r
Example #17
0
def g_cs(repo, rev):
    if hasattr(repo, 'revparse_single'):
        try:
            # TODO Check this. Currently it works only in development branch
            r = repo.revparse_single(rev)
        except Exception:  # FIXME be more specific
            vim_throw('norev', rev, repo.path)
    else:
        try:
            ref = repo.lookup_reference(rev)
            r = repo[ref.resolve().oid]
        except KeyError:
            try:
                r = repo[unicode(rev, 'utf-8')]
            except KeyError:
                vim_throw('norev', rev, repo.path)

    while not isinstance(r, git.Commit):
        if isinstance(r, git.Tag):
            r = repo[r.target]
        else:
            vim_throw('uresrev', repr(r), rev, repo.path)

    return r
Example #18
0
def g_repo(path):
    try:
        return WorkingTree.open(path)
    except NotBranchError:
        vim_throw('norepo', path)
Example #19
0
def g_repo(path):
    try:
        return hg.repository(PrintUI(), path)
    except error.RepoError:
        vim_throw('norepo', path)
Example #20
0
def g_repo(path):
    try:
        return git.Repository(path)
    except KeyError:
        vim_throw('norepo', path)
Example #21
0
def g_repo(path):
    try:
        return hg.repository(PrintUI(), path)
    except error.RepoError:
        vim_throw('norepo', path)
Example #22
0
def g_cs(repo, rev):
    try:
        return repo[rev]
    except RepoLookupError:
        vim_throw('norev', rev, repo.path)
Example #23
0
def g_repo(path):
    try:
        return WorkingTree.open(path)
    except NotBranchError:
        vim_throw('norepo', path)
Example #24
0
def g_cs(repo, rev):
    try:
        return repo[rev]
    except RepoLookupError:
        vim_throw('norev', rev, repo.path)
Example #25
0
def g_fctx(cs, filepath):
    try:
        return cs.filectx(filepath)
    except error.LookupError:
        vim_throw('nofile', filepath, cs.hex(), cs._repo.path)
Example #26
0
def g_fctx(cs, filepath):
    try:
        return cs.filectx(filepath)
    except error.LookupError:
        vim_throw('nofile', filepath, cs.hex(), cs._repo.path)
Example #27
0
def g_repo(path):
    try:
        return git.Repository(path)
    except KeyError:
        vim_throw('norepo', path)