Commit graph

34 commits

Author SHA1 Message Date
Ratchanan Srirattanamet
b4d0481c56
fix: auto-no-squash inference for GitLab (#140)
When a GitLab MR is not squashed, `squash_commit_sha` will be `null`,
not `undefined`. Update `inferSquash()` to account for this.
2024-10-07 14:40:31 +02:00
Ratchanan Srirattanamet
e2d73d050c
fix: cherry-pick order on GitLab by reversing commmit list only once (#137)
GitLabClient already handle commit order reversing, so re-handle it in
Runner causes cherry-pick order on GitLab to be wrong.

Remove commit order handling from Runner, and instead handle difference
between GitHub and Codeberg inside GitHubClient.

Now, since the default of --bp-branch-name takes the commit list from
{GitHub,GitLab}Client directly, that means backporting branch name
on Codeberg will also be changed to have commits in the correct order
too (old to new, in line with GitHub and GitLab), which is IMO a nice
bonus.
2024-10-03 19:39:03 +02:00
Andrea Lamparelli
cb3473d7c9
fix(gh130): apply commits in the correct order on github (#131) 2024-07-16 17:49:23 +02:00
Andrea Lamparelli
2bb7f73112
feat: implement error notification as pr comment (#124)
* feat: implement error notification as pr comment

* Update action.yml

Co-authored-by: Earl Warren <109468362+earl-warren@users.noreply.github.com>

* feat: implement gitlab client and surround with try catch

* docs: add error notification enablment in the doc

* feat: disable comment if dry-run

* feat: update the default comment on error

---------

Co-authored-by: Earl Warren <109468362+earl-warren@users.noreply.github.com>
2024-04-10 23:01:16 +02:00
Earl Warren
6042bcc40b
feat: auto-detect the value of the no-squash option (#118)
The auto-no-squash option is added to:

* backport all the commits when the pull/merge request has been merged
* backport the squashed commit otherwise

It is equivalent to dynamically adjust the value of the no-squash
option, depending on the context.

The no-squash option is kept for backward compatibility for a single
use case: backporting the merged commit instead of backporting the
commits of the pull/merge request request.

Detecting if a pull/merge request was squashed or not depends on the
underlying forge:

* Forgejo / GitHub: use the API to count the number of parents
* GitLab: if the squash_commit_sha is set, the merge request was
  squashed

If the pull/merge request is open, always backport all the commits it
contains.

Fixes: https://github.com/kiegroup/git-backporting/issues/113

Co-authored-by: Andrea Lamparelli <a.lamparelli95@gmail.com>
2024-04-08 18:51:13 +02:00
Earl Warren
6d9b9db590
fix: return GitHub no-squash commits in order (#115)
Fixes: https://github.com/kiegroup/git-backporting/issues/114
2024-04-02 11:17:41 +02:00
Earl Warren
fe6be83074
feat: add --cherry-pick-options to add to all cherry-pick run (#116)
Fixes: https://github.com/kiegroup/git-backporting/issues/111
2024-04-02 10:34:48 +02:00
Andrea Lamparelli
53cc505f17
feat(gh75): extract target branched from pr labels (#112) 2024-03-30 19:19:17 +01:00
Earl Warren
80a0b554f0
feat: add --git-client to explicitly set the type of forge (#106)
codeberg is running Forgejo and it may not be possible to infer that
from the URL alone. The same is true for GitHub Enterprise Server.
2024-03-23 17:13:14 +01:00
Andrea Lamparelli
c57fca6bd6
fix(gh-96): fix git token parsing (#98) 2024-02-23 15:13:34 +01:00
Ratchanan Srirattanamet
9bcd6e6b55
fix: --auth when --git-user contains space (#95)
Since --git-user is a user-facing name, it's common to include a space
in it. As such, it's not suitable to use as a username in a Git remote
URL.

GitLab documented that it doesn't (yet?) check for username [1], and
from my testing GitHub doesn't seem to care either. So just use an
arbitrary name as a username.

[1] https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html
2024-02-23 10:30:18 +01:00
Ratchanan Srirattanamet
300fa91a8a
fix: --no-squash on single-commit GitLab MR (#93)
Due to off-by-one error in GitLabMapper, --no-squash was not effective
on an MR containing single commit. Fix by using the same condition as
GitHubMapper.
2024-02-20 14:24:08 +01:00
Andrea Lamparelli
70da575afc
feat(gh-85): take git tokens from environment (#88) 2023-12-10 22:05:53 +01:00
Shyim
ed32d2275b
fix: namespace parsing in gitlab (#84)
* fix: namespace parsing in gitlab

* test: add test for nested namespace

---------

Co-authored-by: Andrea Lamparelli <a.lamparelli95@gmail.com>
2023-12-05 16:08:49 +01:00
Andrea Lamparelli
9f0fbc0b2f
feat: integrate with codeberg (#80) 2023-08-18 13:15:38 +02:00
Andrea Lamparelli
5fc72e127b
feat(issue-77): handle multiple target branches (#78)
fix: https://github.com/kiegroup/git-backporting/issues/77

This enhancement allow users to backport the same change to multiple
branches with one single tool invocation
2023-08-03 21:57:11 +02:00
Andrea Lamparelli
fa43ffc1dc
fix: preserve new lines in body and comments (#72) 2023-07-27 15:35:23 +02:00
Andrea Lamparelli
bed7e29ddc feat(issue-70): additional pr comments 2023-07-27 12:36:42 +02:00
Andrea Lamparelli
10a46551ee refactor: move backport data generation to configs parser 2023-07-27 11:26:39 +02:00
Andrea Lamparelli
a8db0755a8
refactor: updated logging messages (#65) 2023-07-20 10:05:07 +02:00
Andrea Lamparelli
265955dda7
feat(issue-62): make cherry-pick strategy configurable (#63)
fix https://github.com/kiegroup/git-backporting/issues/62
2023-07-12 13:50:59 +02:00
Andrea Lamparelli
ead1322c0f
fix(issue-57): truncate the bp branch name (#58)
fix: https://github.com/kiegroup/git-backporting/issues/57

This pr will ensure that if the provided/generated backport branch name
exceede the maximum branch name length set for git, which is 250 chars,
it truncates that name to 250 chars exactly.

In order to include as much commits as possible the branch name will
contain by default the shortened version of all commits
2023-07-11 22:46:21 +02:00
Andrea Lamparelli
91782505ce
test: fix process.argv reset during cli tests (#60) 2023-07-11 22:43:22 +02:00
Shubh Bapna
49a7350406
perf: use concurrent promises instead of awaiting them one by one (#59) 2023-07-11 22:15:52 +02:00
Andrea Lamparelli
c4dbb26c1d
feat(issue-54): backport pr commits without squash (#55)
* feat(issue-54): backport pr commits without squash

fix https://github.com/kiegroup/git-backporting/issues/54

* feat(issue-54): fixed readme
2023-07-11 11:22:01 +02:00
Andrea Lamparelli
a737aa7c4c
fix(issue-52): use pull request github api url as source (#53)
fix https://github.com/kiegroup/git-backporting/issues/52
2023-07-10 15:18:51 +02:00
Andrea Lamparelli
fcc01673f4
feat(issue-41): set and inherit labels (#48)
fix https://github.com/kiegroup/git-backporting/issues/41
2023-07-10 08:49:11 +02:00
Andrea Lamparelli
5ead31f606
feat: config file as option (#42)
Fix https://github.com/lampajr/backporting/issues/37

This enhancement required a huge refactoring where all arguments
defaults have been centralized in one single place ArgsParser#parse
2023-07-05 22:11:23 +02:00
Andrea Lamparelli
107f5e52d6
feat: integrate tool with gitlab service (#39)
* feat: integrate tool with gitlab service

Fix https://github.com/lampajr/backporting/issues/30
2023-07-02 00:05:17 +02:00
Andrea Lamparelli
6869becb3e fix: removed 'powered by..' pr body suffix 2023-06-28 11:56:36 +02:00
Andrea Lamparelli
a30b6d6290 refactor: changed method name and removed useless data 2023-06-22 17:57:49 +02:00
Andrea Lamparelli
a32e8cd34c
feat: override backporting pr fields (#38)
* feat: override local git user config

* feat(issue-32): override reviewers and assignees
2023-06-22 17:44:14 +02:00
Andrea Lamparelli
941beda208
feat(issue-17): override backporting pr data (#29) 2023-06-20 22:29:52 +02:00
Andrea Lamparelli
b3936e019a feat: pull request backporting
feat: backport still open pull requests
2023-01-05 11:41:14 +01:00