{"id":13450776,"url":"https://github.com/tf/redmine_merge_request_links","last_synced_at":"2025-07-28T23:30:31.758Z","repository":{"id":51605740,"uuid":"148121654","full_name":"tf/redmine_merge_request_links","owner":"tf","description":"Display links to associated Gitlab merge requests and GitHub pull requests on Redmine's issue page.","archived":false,"fork":false,"pushed_at":"2022-08-23T10:28:37.000Z","size":90,"stargazers_count":36,"open_issues_count":8,"forks_count":25,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-05T04:41:29.630Z","etag":null,"topics":["github","gitlab","merge-requests","pull-requests","redmine","redmine-plugin","webhooks"],"latest_commit_sha":null,"homepage":"https://www.redmine.org/plugins/redmine_merge_request_links","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-10T08:13:22.000Z","updated_at":"2025-02-13T13:19:59.000Z","dependencies_parsed_at":"2022-08-13T01:00:50.978Z","dependency_job_id":null,"html_url":"https://github.com/tf/redmine_merge_request_links","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/tf/redmine_merge_request_links","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf%2Fredmine_merge_request_links","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf%2Fredmine_merge_request_links/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf%2Fredmine_merge_request_links/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf%2Fredmine_merge_request_links/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tf","download_url":"https://codeload.github.com/tf/redmine_merge_request_links/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf%2Fredmine_merge_request_links/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267604097,"owners_count":24114483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github","gitlab","merge-requests","pull-requests","redmine","redmine-plugin","webhooks"],"created_at":"2024-07-31T07:00:38.353Z","updated_at":"2025-07-28T23:30:31.506Z","avatar_url":"https://github.com/tf.png","language":"Ruby","funding_links":[],"categories":["Plugins","Unmaintained"],"sub_categories":["For internal use","Plugins"],"readme":"# Redmine Merge Request Links\n\n[![Tests](https://github.com/tf/redmine_merge_request_links/workflows/tests/badge.svg)](https://github.com/tf/redmine_merge_request_links/actions)\n\nDisplay links to associated merge requests and pull requests on Redmine's issue page.\n\nIntercepts webhooks and parses merge request descriptions for mentioned issue ids.\n\nThe following platforms are supported:\n\n* GitHub\n* GitLab\n* Gitea\n\n\n## Requirements\n\n* Redmine 3 (tested with 3.4.6)\n\n## Installation\n\nCopy plugin directoy to `{RAILS_APP}/plugins` on your Redmine\npath. Run plugin migrations from your redmine root directory:\n\n```bash\n$ rake redmine:plugins:migrate RAILS_ENV=production\n```\n\nThis plugin requires an additional view hook which can be added by\napplying a patch to your Redmine instance. From your Redmine path run:\n\n```bash\n$ git apply plugins/redmine_merge_request_links/patches/view_hook_issues_show_after_details_redmine_3.4.patch\n```\n\nor if you use EasyRedmine\n```bash\n$ git apply plugins/redmine_merge_request_links/patches/view_hook_issues_show_after_details_easyredmine.patch\n```\n\nOne of the following environment variables need to be set:\n\n* `REDMINE_MERGE_REQUEST_LINKS_GITLAB_WEBHOOK_TOKEN`\n* `REDMINE_MERGE_REQUEST_LINKS_GITHUB_WEBHOOK_TOKEN`\n\nIf you use systemd set appropriate environment variable:\n\n`https://serverfault.com/a/413408`\n\nThey must contain secrets which have to be configured in GitLab/GitHub to\nauthenticate webhooks.\n\nExport the environment variable(s) in your bash or webserver config.\nExamples with Phusion Passenger webserver can be found here:\nhttps://www.phusionpassenger.com/library/indepth/environment_variables.html\n\nFinally, restart your webserver.\n\n\n## Configuration\n\nCreate a webhook in GitLab or GitHub as described here:\n\n### GitLab\n\n* Go to either the webhook page of a project (Settings \u003e Integration)\n  or the system hook page (Admin area \u003e System Hooks).\n\n* Enter the URL of your Redmine instance\n  `http://redmine.example.com/merge_requests/event`\n\n* Enter the secret token you defined in environment variable\n  `REDMINE_MERGE_REQUEST_LINKS_GITLAB_WEBHOOK_TOKEN`\n\n* Check the \"Merge request events\" trigger.\n\n* Click \"Add webhook\".\n\n### GitHub\n\n* Go to the webhook page of a project or organization.\n\n* Enter the URL of your Redmine instance\n  `https://redmine.example.com/merge_requests/event`.\n\n* Select `application/json` as content type.\n\n* Enter the secret token you defined in environment variable\n  `REDMINE_MERGE_REQUEST_LINKS_GITHUB_WEBHOOK_TOKEN`.\n\n* Choose \"Let me select individual events\".\n\n* Check the \"Pull requests\" event.\n\n* Click \"Add webhook\".\n\n### Gitea\n\n* Go to the webhook page of a project or organization.\n\n* Enter the URL of your Redmine instance\n  `https://redmine.example.com/merge_requests/event`.\n\n* Select `application/json` as content type.\n\n* Enter the secret token you defined in environment variable\n  `REDMINE_MERGE_REQUEST_LINKS_GITEA_WEBHOOK_TOKEN`.\n\n* Choose \"Custom events...\".\n\n* Check the \"Pull requests\" event.\n\n* Click \"Add webhook\".\n\n### Redmine\n\nTo display associated merge requests on issue pages:\n\n* Add the \"View associated merge requests\" permission to one or more\n  roles.\n\n* Enable the \"Merge request links\" project module.\n\n\n## Usage\n\nCreate a merge request and reference a Redmine issue either in the\nform `#123` or `REDMINE-123`. See a link to the merge request appear\non the issue's Redmine page.\n\n\n## Known Issues\n\n* GitLab only passes the author id as part of the merge request\n  webhook not a display name. It does include the username of the user\n  whose action triggered the webhook, though. To prevent having to\n  fetch the author name in a separate REST API call, this username is\n  used as author name since the user triggering a merge request's\n  first webhook is usually the author. For merge request that were\n  created before the plugin was installed, this causes the first user\n  to edit the merge request to be recorded as the author.\n\n\n## Development\n\nAfter checking out the repository, run\n\n```\n$ bin/build\n```\n\nto build the Docker container used to run the test suite.\n\nThen run\n\n```\n$ bin/test\n```\n\nto run the test suite inside a Docker container.\n\n## License\n\nThe gem is available as open source under the terms of the\n[MIT License](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftf%2Fredmine_merge_request_links","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftf%2Fredmine_merge_request_links","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftf%2Fredmine_merge_request_links/lists"}