55 lines
4 KiB
HTML
55 lines
4 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Git-Repository verbinden{% endblock %}
|
|
{% block content %}
|
|
<h1>Git-Repository verbinden</h1>
|
|
<div class="card"><div class="card-body">
|
|
<form method="post" action="/workspaces/{{ workspace.id }}/sources" class="stack">
|
|
<input type="hidden" name="_csrf" value="{{ p.csrf }}">
|
|
<div class="form-group">
|
|
<label for="name">Name</label>
|
|
<input id="name" name="name" required maxlength="200" value="{{ form.name }}">
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="url">URL</label>
|
|
<input id="url" name="url" required value="{{ form.url }}" placeholder="https://bitbucket.intern/scm/proj/repo.git">
|
|
<p class="form-hint">Nur https:// zu freigegebenen Hosts{% if allow_local %}, lokal auch file://{% endif %}. Keine Zugangsdaten in der URL.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="branch">Ziel-Branch</label>
|
|
<input id="branch" name="branch" value="{{ form.branch or 'main' }}">
|
|
<p class="form-hint">Standard für alles, was die KI liest, wovon ihre Chat-Branches abzweigen und wohin Pull Requests gehen, meist <code>main</code> oder <code>develop</code>. Andere Branches bleiben nutzbar: unter <em>Repository</em> ansehen oder einen Chat auf einem bestehenden Branch starten.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="pr_provider">Pull Requests</label>
|
|
<select id="pr_provider" name="pr_provider">
|
|
{% for key, label in providers.items() %}<option value="{{ key }}" {% if form.pr_provider == key %}selected{% endif %}>{{ label }}</option>{% endfor %}
|
|
</select>
|
|
<p class="form-hint">Den Branch des Chats (<code>ai/…</code>) pusht und den Pull Request erstellt ein Mitglied per Klick in der Ansicht „Änderungen“. Das Token braucht dafür Schreibrechte, die per Branch Permission auf <code>ai/*</code> beschränkt sein sollten.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<input type="hidden" name="delete_branches" value="0">
|
|
<label class="cluster"><input type="checkbox" name="delete_branches" value="1" {% if form.delete_branches is not defined or form.delete_branches %}checked{% endif %}> Branch nach Merge oder Ablehnung im Git-Server löschen</label>
|
|
<p class="form-hint">Nur wenn dort noch der zuletzt übertragene Stand liegt; Commits von außen bleiben erhalten. In der Plattform bleiben Commits und Diff sichtbar. Der technische Account braucht dafür das Recht, <code>ai/*</code>-Branches zu löschen.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="token">Token des technischen Accounts</label>
|
|
<input id="token" name="token" type="password" autocomplete="off" placeholder="z. B. HTTP Access Token aus Bitbucket">
|
|
<p class="form-hint">Wird verschlüsselt gespeichert und nie wieder angezeigt. Leer lassen für öffentliche Repositories. Für das Lesen reichen Leserechte, für Push und Pull Requests Schreibrechte auf <code>ai/*</code>.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="username">Nutzername (optional)</label>
|
|
<input id="username" name="username" autocomplete="off" value="{{ form.username or '' }}">
|
|
<p class="form-hint">Leer lassen für Bitbucket Data Center (Token als Bearer). Für Gitea, Forgejo und klassische HTTPS-Server den Nutzernamen des technischen Accounts eintragen; GitLab: <code>oauth2</code>; GitHub: <code>x-access-token</code>. Das Token gilt dann als Passwort.</p>
|
|
</div>
|
|
<label class="cluster">
|
|
<input type="checkbox" name="exposure_confirmed" value="1" {% if form.exposure_confirmed %}checked{% endif %}>
|
|
<span>Ich bestätige, dass alle Mitglieder dieses Workspace die Inhalte dieser Quelle über die KI sehen dürfen. Der Zugriff erfolgt mit einem technischen Zugang, nicht mit den Rechten der einzelnen Mitglieder.</span>
|
|
</label>
|
|
{% if error %}<p class="form-error">{{ error }}</p>{% endif %}
|
|
<div class="cluster">
|
|
<button class="btn btn-primary" type="submit">Verbinden</button>
|
|
<a class="btn btn-ghost" href="/workspaces/{{ workspace.id }}/data">Abbrechen</a>
|
|
</div>
|
|
</form>
|
|
</div></div>
|
|
{% endblock %}
|