roundabout,
created on Friday, 22 December 2023, 18:58:25 (1703271505),
received on Wednesday, 31 July 2024, 06:54:40 (1722408880)
Author identity: vlad <vlad.muntoiu@gmail.com>
092dd25d4861e34d6881a2a0e3e7b518b06fb864
app.py
@@ -979,8 +979,9 @@ def repositoryBranches(username, repository):
) @repositories.route("/<username>/<repository>/log/")def repositoryLog(username, repository):@repositories.route("/<username>/<repository>/log/", defaults={"branch": None}) @repositories.route("/<username>/<repository>/log/<branch>/") def repositoryLog(username, repository, branch):if not (getVisibility(username, repository) or getPermissionLevel(flask.session.get("username"), username, repository) is not None): flask.abort(403)
@@ -995,12 +996,48 @@ def repositoryLog(username, repository):
repo = git.Repo(serverRepoLocation) repoData = Repo.query.filter_by(route=f"/{username}/{repository}").first() commits = Commit.query.filter_by(repo=repoData)if not repoData.defaultBranch: if repo.heads: repoData.defaultBranch = repo.heads[0].name else: return flask.render_template("empty.html", remote=f"http{'s' if config.suggestHTTPS else ''}://{config.BASE_DOMAIN}/git/{username}/{repository}"), 200 if not branch: branch = repoData.defaultBranch return flask.redirect(f"./{branch}", code=302) if branch.startswith("tag:"): ref = f"tags/{branch[4:]}" elif branch.startswith("~"): ref = branch[1:] else: ref = f"heads/{branch}" ref = ref.replace("~", "/") # encode slashes for URL support try: repo.git.checkout("-f", ref) except git.exc.GitCommandError: return flask.render_template("not-found.html"), 404 branches = repo.heads allRefs = [] for ref in repo.heads: allRefs.append((ref, "head")) for ref in repo.tags: allRefs.append((ref, "tag")) commitList = [f"/{username}/{repository}/{sha}" for sha in gitCommand(serverRepoLocation, None, "log", "--format='%H'").decode().split("\n")] commits = Commit.query.filter(Commit.identifier.in_(commitList))return flask.render_template( "repo-log.html", username=username, repository=repository, branches=allRefs, current=branch,repoData=repoData, repo=repo, commits=commits,
templates/repository/repo-log.html
@@ -6,6 +6,43 @@
<x-vbox> <x-frame style="--width: 896px;" class="flexible-space"> <x-vbox> <select id="branch-selection" style="flex: 0 1 auto;"> <option value="ref-{{ current }}" selected>{% if "tag:" in current %}tag:{% endif %}{{ current | replace("~", "/") | replace("tag:", " ") }}</option> {% for branch in branches %} {% if branch[0] != current | replace("~", "/") | replace("tag:", " ") %} <option value="ref-{% if branch[1] == 'tag' %}tag:{% endif %}{{ branch[0] | replace('/', '~') }}">{% if branch[1] == "tag" %}tag: {% endif %}{{ branch[0] }}</option> {% endif %} {% endfor %} <!--<option value="new">[CREATE NEW BRANCH]</option>--> </select> <script> branchSelect = document.getElementById("branch-selection"); branchSelect.addEventListener("change", function() { if(branchSelect.value == "new") { document.getElementById("new-branch").showModal(); } else { const PREFIX = "ref-"; if(branchSelect.value.startsWith(PREFIX)) { branch = branchSelect.value.slice(PREFIX.length); } var http = new XMLHttpRequest(); http.open("HEAD", "/{{ username }}/{{ repository }}/log/" + branch + "/{{ subpath }}", false); http.send(); if(http.status == 404) { location.href = "/{{ username }}/{{ repository }}/log/" + branch; } else { location.href = "/{{ username }}/{{ repository }}/log/" + branch + "/{{ subpath }}"; } } }); path = document.getElementById("repo-path-bar"); path.addEventListener("change", function() { location.href = "/{{ username }}/{{ repository }}/log/{{ current }}" + path.value; }); </script>{% for commit in commits | reverse %} <article class="card card-horizontal"> <figure class="branch-icon">