예제 #1
0
def _smartlog(ui, repo, *pats, **opts):
    masterfallback = "interestingmaster()"

    masterstring = (opts.get("master") or ui.config("smartlog", "master")
                    or masterfallback)

    masterrev = repo.anyrevs([masterstring], user=True).first()
    revs = getrevs(ui, repo, masterstring, **opts)

    if -1 in revs:
        revs.remove(-1)

    if len(revs) == 0:
        return

    # Print it!
    template = opts.get("template") or ""
    revdag, reserved = getdag(ui, repo, sorted(revs), masterrev, template)
    displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True)
    ui.pager("smartlog")
    cmdutil.displaygraph(ui, repo, revdag, displayer, reserved=reserved)

    try:
        with open(repo.localvfs.join("completionhints"), "w+") as f:
            for rev in revdag:
                commit_hash = rev[2].node()
                f.write(nodemod.short(commit_hash) + "\n")
    except IOError:
        # No write access. No big deal.
        pass
예제 #2
0
파일: smartlog.py 프로젝트: jsoref/eden
def _smartlog(ui, repo, *pats, **opts):
    if opts.get("rev"):
        masterfallback = "null"
    else:
        masterfallback = "interestingmaster()"

    masterstring = (opts.get("master") or ui.config("smartlog", "master")
                    or masterfallback)

    masterrev = repo.anyrevs([masterstring], user=True).first()
    revs = getrevs(ui, repo, masterstring, **opts)

    if -1 in revs:
        revs.remove(-1)

    if len(revs) == 0:
        return

    # Print it!
    revdag, reserved = getdag(ui, repo.unfiltered(),
                              sorted(revs, reverse=True), masterrev)
    displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True)
    ui.pager("smartlog")
    if ui.config("experimental", "graph.renderer") == "legacy":
        overrides = {}
        if ui.config("experimental", "graphstyle.grandparent", "2.") == "|":
            overrides[("experimental", "graphstyle.grandparent")] = "2."
        with ui.configoverride(overrides, "smartlog"):
            if reserved:
                for prev in reserved:
                    addfakerev(revdag, prev)
            cmdutil.displaygraph(ui, repo, revdag, displayer,
                                 graphmod.asciiedges, None, None)
    else:
        cmdutil.rustdisplaygraph(ui,
                                 repo,
                                 revdag,
                                 displayer,
                                 reserved=reserved)

    try:
        with open(repo.localvfs.join("completionhints"), "w+") as f:
            for rev in revdag:
                commit_hash = rev[2].node()
                # Skip fakectxt nodes
                if commit_hash != "...":
                    f.write(nodemod.short(commit_hash) + "\n")
    except IOError:
        # No write access. No big deal.
        pass

    global hiddenchanges
    if hiddenchanges:
        ui.warn(
            _("hiding %s old heads without bookmarks\n") % hiddenchanges,
            notice=_("note"),
        )
        ui.warn(_("(use --all to see them)\n"))
예제 #3
0
        def render(self):
            ui = self.ui
            ui.pushbuffer()
            ui.status(_("Interactive Smartlog History\n\n"))
            if opts.get("all"):
                limit = 0
            else:
                limit = 2 * 604800  # two weeks
            if self.index == len(self.versions):
                self.index = -1
            if self.index == -2:
                self.index = len(self.versions) - 1
            if self.index == -1:
                with progress.spinner(ui, _("fetching")):
                    firstpublic, revdag = serv.getsmartlog(
                        reponame, workspacename, repo, limit)
                ui.status(_("Current Smartlog:\n\n"))
            else:
                with progress.spinner(ui, _("fetching")):
                    firstpublic, revdag, slversion, sltimestamp = serv.getsmartlogbyversion(
                        reponame,
                        workspacename,
                        repo,
                        None,
                        self.versions[self.index]["version_number"],
                        limit,
                    )
                formatteddate = time.strftime("%Y-%m-%d %H:%M:%S",
                                              time.localtime(sltimestamp))
                ui.status(
                    _("Smartlog version %d \nsynced at %s\n\n") %
                    (slversion, formatteddate))
            template = "sl_cloud"
            smartlogstyle = ui.config("templatealias", template)
            if smartlogstyle:
                opts["template"] = "{%s}" % smartlogstyle
            else:
                ui.debug(
                    _("style %s is not defined, skipping") % smartlogstyle,
                    component="commitcloud",
                )

            displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True)
            if ui.config("experimental", "graph.renderer") == "legacy":
                cmdutil.displaygraph(ui, repo, revdag, displayer,
                                     graphmod.asciiedges)
            else:
                cmdutil.rustdisplaygraph(ui,
                                         repo,
                                         revdag,
                                         displayer,
                                         reserved=firstpublic)
            repo.ui.status(
                _("<-: newer  "
                  "->: older  "
                  "q: abort  \n"
                  "a: 1 day forward  d: 1 day back \n"))
            return ui.popbuffer()
예제 #4
0
        def rendercontents(self, versionindex):
            if versionindex in self.cache:
                contents = self.cache[versionindex]
            else:
                if versionindex == len(self.versions):
                    (title, slinfo) = self.loadcurrentversion()
                else:
                    (title, slinfo) = self.loadoldversion(versionindex)

                contents = [
                    ui.label("Commit Cloud Smartlog History",
                             "bold cyan underline").encode(),
                    ui.label(
                        "Use [ and ] to navigate to earlier or later versions",
                        "cyan").encode(),
                    ui.label(
                        "Note: version dates may be off by one due to a server bug",
                        "cyan",
                    ).encode(),
                    b"",
                    title.encode(),
                    b"",
                ]
                firstpublic, revdag = self.serv.makedagwalker(
                    slinfo, self.repo)
                displayer = cmdutil.show_changeset(self.ui,
                                                   self.repo,
                                                   self.opts,
                                                   buffered=True)

                def out(row):
                    contents.extend(row.rstrip().encode().split(b"\n"))

                with progress.spinner(ui, _("loading commit information")):
                    cmdutil.displaygraph(
                        self.ui,
                        self.repo,
                        revdag,
                        displayer,
                        reserved=firstpublic,
                        out=out,
                    )
                self.cache[versionindex] = contents

            return contents
예제 #5
0
def cloudsmartlog(ui, repo, template="sl_cloud", **opts):
    """get smartlog view for the default workspace of the given user

    If the requested template is not defined in the config
    the command provides a simple view as a list of draft commits.
    """

    reponame = ccutil.getreponame(repo)
    workspacename = workspace.parseworkspace(ui, opts)
    if workspacename is None:
        workspacename = workspace.currentworkspace(repo)
    if workspacename is None:
        workspacename = workspace.defaultworkspace(ui)

    if opts.get("history"):
        interactivehistory.showhistory(ui, repo, reponame, workspacename,
                                       **opts)
        return

    date = opts.get("date")
    version = opts.get("workspace_version")
    if date:
        parseddate = util.parsedate(date)
    else:
        parseddate = None

    ui.status(
        _("searching draft commits for the '%s' workspace for the '%s' repo\n")
        % (workspacename, reponame),
        component="commitcloud",
    )
    serv = service.get(ui, tokenmod.TokenLocator(ui).token)
    if parseddate is None and not version:
        with progress.spinner(ui, _("fetching")):
            firstpublic, revdag = serv.getsmartlog(reponame, workspacename,
                                                   repo, 0)
    else:
        with progress.spinner(ui, _("fetching")):
            firstpublic, revdag, slversion, sltimestamp = serv.getsmartlogbyversion(
                reponame, workspacename, repo, parseddate, version, 0)
    if parseddate or version:
        formatteddate = time.strftime("%Y-%m-%d %H:%M:%S",
                                      time.localtime(sltimestamp))
        ui.status(
            _("Smartlog version %d \nsynced at %s\n\n") %
            (slversion, formatteddate))
    else:
        ui.status(_("Smartlog:\n\n"))
    # set up pager
    ui.pager("smartlog")

    smartlogstyle = ui.config("templatealias", template)
    # if style is defined in templatealias section of config apply that style
    if smartlogstyle:
        opts["template"] = "{%s}" % smartlogstyle
    else:
        ui.debug(
            _("style %s is not defined, skipping") % smartlogstyle,
            component="commitcloud",
        )

    # show all the nodes
    displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True)
    if ui.config("experimental", "graph.renderer") == "legacy":
        cmdutil.displaygraph(ui, repo, revdag, displayer, graphmod.asciiedges)
    else:
        cmdutil.rustdisplaygraph(ui,
                                 repo,
                                 revdag,
                                 displayer,
                                 reserved=firstpublic)