Compare commits

..
16 Commits
Author SHA1 Message Date
Jonathan Teran c8e1a7cc88 chore: bump version and update CHANGELOG.md [skip ci] 2025-12-04 10:19:54 -03:00
JonathanGitFlowandjt 65be7a01f0 Merged in bugfix/tag-name-scheme (pull request #43)
bugfix: tag name scheme

Approved-by: Jonathan Teran
2025-12-04 13:17:52 +00:00
Jonathan Teran 7ce6addf07 bugfix: revertir guion entre version y entorno, agregar guion a sufijo 2025-12-04 10:17:26 -03:00
bitbucket-pipelines 824b5f06de chore: bump version and update CHANGELOG.md [skip ci] 2025-12-04 13:16:27 +00:00
JonathanGitFlowandjt 9937f4b6bc Merged in bugfix/tag-name-scheme (pull request #42)
bugfix: tag name scheme

Approved-by: Jonathan Teran
2025-12-04 13:15:56 +00:00
Jonathan Teran 053b8b102b bugfix: agrego guion entre version y nombre de entorno 2025-12-04 10:15:32 -03:00
bitbucket-pipelines a2475195b2 chore: bump version and update CHANGELOG.md [skip ci] 2025-12-04 13:13:42 +00:00
JonathanGitFlowandjt 603519bf39 Merged in bugfix/create-changelog-when-missing (pull request #41)
bugfix: create changelog when missing

Approved-by: Jonathan Teran
2025-12-04 13:13:14 +00:00
Jonathan Teran 0c8e7bb37a bugfix: crear changelog cuando no existe 2025-12-04 10:11:10 -03:00
bitbucket-pipelines 6643271747 chore: bump version and update CHANGELOG.md [skip ci] 2025-11-29 16:41:43 +00:00
JonathanGitFlowandjt 68e11c66d1 Merged in bugfix/group-release-confirmation-and-commits-squash-count (pull request #40)
bugfix: group release confirmation and commits squash count

Approved-by: Jonathan Teran
2025-11-29 16:41:19 +00:00
jt f1f6e6724c bugfix: arreglo mensaje de confirmacion de squash, muevo prompt de commit message antes del squash 2025-11-29 13:40:34 -03:00
jt 83df7e9553 bugfix: cambio default en confirmacion para agrupar release 2025-11-29 13:35:25 -03:00
bitbucket-pipelines f5e683a1da chore: bump version and update CHANGELOG.md [skip ci] 2025-11-29 16:22:03 +00:00
JonathanGitFlowandjt fb9b8b57f6 Merged in feature/release-branch-groups (pull request #39)
feature: release branch groups

Approved-by: Jonathan Teran
2025-11-29 16:21:39 +00:00
jt c47afffa14 feature: agrego opcion para agrupar ramas release 2025-11-29 13:20:33 -03:00
5 changed files with 78 additions and 20 deletions
+41
View File
@@ -1,3 +1,44 @@
## v1.6.3 - 2025-12-04
- **bugfix**: revertir guion entre version y entorno, agregar guion a sufijo [[jteran](mailto:jteran@renatre.org.ar)] (7ce6add)
- **bugfix**: agrego guion entre version y nombre de entorno [[jteran](mailto:jteran@renatre.org.ar)] (053b8b1)
---
## v1.6.3- - 2025-12-04
- **bugfix**: agrego guion entre version y nombre de entorno [[jteran](mailto:jteran@renatre.org.ar)] (053b8b1)
---
## v1.6.2 - 2025-12-04
- **bugfix**: crear changelog cuando no existe [[jteran](mailto:jteran@renatre.org.ar)] (0c8e7bb)
---
## v1.6.1 - 2025-11-29
### Commits
- **bugfix**: arreglo mensaje de confirmacion de squash, muevo prompt de commit message antes del squash [[jonathan.nerat](mailto:jonathan.nerat@gmail.com)] (f1f6e67)
- **bugfix**: cambio default en confirmacion para agrupar release [[jonathan.nerat](mailto:jonathan.nerat@gmail.com)] (83df7e9)
---
## v1.6.0 - 2025-11-29
### Commits
- **feature**: agrego opcion para agrupar ramas release [[jonathan.nerat](mailto:jonathan.nerat@gmail.com)] (c47afff)
---
## v1.5.2 - 2025-11-28
### Commits
+1 -2
View File
@@ -16,8 +16,6 @@ class Changelog:
return f"""## {title} - {now.strftime("%F")}
### Commits
"""
def generate_content(self, base: str, branch: str):
@@ -56,5 +54,6 @@ class Changelog:
if isfile(self.FILENAME):
with open(self.FILENAME, "r") as f:
content += f.read()
with open(self.FILENAME, "w") as f:
f.write(content)
+30 -12
View File
@@ -1,4 +1,4 @@
from argparse import Namespace
from argparse import ArgumentParser, Namespace
from git_flow import COMMIT_TYPES, GitFlowError
from git_flow.command.base import Command
from git_flow.git import Git
@@ -11,6 +11,15 @@ class ReleaseCommand(Command):
def description(self) -> str:
return """Realiza el merge de la rama, o crea el PR para hacerlo si tiene un remoto configurado"""
def setup_parser(self, parser: ArgumentParser) -> ArgumentParser:
parser.add_argument(
"--group",
nargs="?",
help="Agrupar release",
)
return parser
def run(self, args: Namespace = Namespace()):
self.ensure_initialized()
@@ -34,34 +43,43 @@ class ReleaseCommand(Command):
else f"release/{next_env}/{branch}"
)
group = args.group
if not group and self.confirm("¿Desea agrupar este release con otra rama?", False):
group = self.choice("Grupo release: ", Git.get_branches("release/" + next_env + "/"))
else:
group = next_env
if has_remote:
Git("pull").exec(print="Sincronizando cambios de la rama")
Git("switch", next_env).exec(print="Cambiando al siguiente entorno")
Git("pull").exec(print="Sincronizando cambios del entorno")
Git("switch", group).exec(print="Cambiando a la rama objetivo")
Git("pull").exec(print="Sincronizando cambios la rama objetivo")
Git("switch", "-").exec(print="Volviendo a la rama original")
base = Git.get_first_fork_point(branch, env)
commits = int(Git("rev-list", base + "..", count=True).firstline())
if commits > 1 and self.confirm(
"Desea reemplazar los {commits} commits de la rama por uno solo?"
f"¿Desea reemplazar los {commits} commits de la rama por uno solo?",
False
):
Git("switch", next_branch, base, create=True).exec(
print="Creando rama release en base"
)
Git("merge", branch, squash=True).exec(
print="Squasheando commits en uno solo"
)
self.info("Debe ingresar el mensaje del commit a crear.")
commit_type = self.choice("Tipo de commit", COMMIT_TYPES[:-1])
commit_message = self.prompt(
"Mensaje (máximo recomendado: 100 caracteres)", persistent=True
)
message = commit_type + ": " + commit_message
Git("switch", next_branch, base, create=True).exec(
print="Creando rama release en base"
)
Git("merge", branch, squash=True).exec(
print="Squasheando commits en uno solo"
)
Git("commit", m=message).exec(print="Creando commit único")
else:
Git("switch", next_branch, create=True).exec(print="Creando rama release")
Git("rebase", base, next_branch, onto=next_env).exec(
Git("rebase", base, next_branch, onto=group).exec(
print="Moviendo cambios hacia el siguiente ambiente"
)
+1 -1
View File
@@ -91,7 +91,7 @@ class TagCommand(Command):
tag = Git.get_current_tag() or f"v0.0.0-{branch}"
until_dash = tag.index("-") if "-" in tag else None
suffix = tag[until_dash + 1 :] if until_dash is not None else ""
suffix = tag[until_dash:] if until_dash is not None else ""
[major, minor, patch] = map(int, tag[1:until_dash].split("."))
if increment == SEMVER_MAJOR:
+3 -3
View File
@@ -50,8 +50,8 @@ class Git:
return Git("rev-parse", "HEAD", abbrev_ref=True).firstline()
@staticmethod
def get_branches():
return Git._get_references("heads")
def get_branches(prefix: str = ""):
return Git._get_references("heads/" + prefix)
@staticmethod
def status():
@@ -79,7 +79,7 @@ class Git:
@staticmethod
def _get_references(kind: str):
prefix = "refs/" + kind + "/"
prefix = "refs/" + kind
return list(map(
lambda r: r.removeprefix(prefix),
Git("for-each-ref", prefix + "*", format="%(refname)").lines(),