feat(branch): créer la branche depuis la carte (issue #3)
slugify + branch_name_for (issue-<n>-<slug>, reconnu par #1/#2);
client create_branch; POST /api/issues/{o}/{r}/{n}/branch (nom
libre validé, idempotent si existante); la carte passe en En
cours, journalisée source branch, étiquette synchronisée;
formulaire dans la section Code lié du panneau détail.
This commit is contained in:
+9
-5
@@ -38,6 +38,7 @@ def _repo(name: str, updated: datetime, archived: bool = False) -> dict:
|
||||
"owner": {"login": "Projets"},
|
||||
"archived": archived,
|
||||
"html_url": f"http://gitea.test/Projets/{name}",
|
||||
"default_branch": "main",
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +73,7 @@ class FakeGitea:
|
||||
_repo("vieux", now - timedelta(days=800)),
|
||||
_repo("archive", now - timedelta(days=1), archived=True),
|
||||
]
|
||||
self.branches = ["main", "feature/1-tache-un", "issue-5-focus"]
|
||||
self.issues = {
|
||||
"Projets/demo": [
|
||||
_issue(1, "Tâche un"),
|
||||
@@ -224,11 +226,13 @@ class FakeGitea:
|
||||
self.label_ops.append(("remove", number, label["name"]))
|
||||
|
||||
async def list_branches(self, owner, repo):
|
||||
return [
|
||||
{"name": "main"},
|
||||
{"name": "feature/1-tache-un"},
|
||||
{"name": "issue-5-focus"},
|
||||
]
|
||||
return [{"name": n} for n in self.branches]
|
||||
|
||||
async def create_branch(self, owner, repo, new_branch, old_branch):
|
||||
if new_branch in self.branches:
|
||||
raise RuntimeError("branch exists")
|
||||
self.branches.append(new_branch)
|
||||
return {"name": new_branch}
|
||||
|
||||
async def list_pulls(self, owner, repo, state="all"):
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user