{"id":22261929,"url":"https://github.com/noraworld/comments-transferor","last_synced_at":"2025-03-25T13:42:12.296Z","repository":{"id":265019205,"uuid":"859819184","full_name":"noraworld/comments-transferor","owner":"noraworld","description":"A simple GitHub Action that allows you to transfer comments on an issue to another one automatically","archived":false,"fork":false,"pushed_at":"2025-03-13T17:25:51.000Z","size":697,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-19T13:46:37.470Z","etag":null,"topics":["comment","comment-system","comments","comments-system","comments-transferor","copy","track","tracker","tracking","transfer"],"latest_commit_sha":null,"homepage":"https://github.com/marketplace/actions/comments-transferor","language":"JavaScript","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/noraworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"noraworld"}},"created_at":"2024-09-19T10:34:13.000Z","updated_at":"2025-03-13T17:25:54.000Z","dependencies_parsed_at":"2024-11-27T10:17:52.507Z","dependency_job_id":null,"html_url":"https://github.com/noraworld/comments-transferor","commit_stats":null,"previous_names":["noraworld/comments-transferor"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noraworld%2Fcomments-transferor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noraworld%2Fcomments-transferor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noraworld%2Fcomments-transferor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noraworld%2Fcomments-transferor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noraworld","download_url":"https://codeload.github.com/noraworld/comments-transferor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245472877,"owners_count":20621182,"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","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":["comment","comment-system","comments","comments-system","comments-transferor","copy","track","tracker","tracking","transfer"],"created_at":"2024-12-03T09:15:10.964Z","updated_at":"2025-03-25T13:42:12.286Z","avatar_url":"https://github.com/noraworld.png","language":"JavaScript","funding_links":["https://github.com/sponsors/noraworld"],"categories":[],"sub_categories":[],"readme":"# Comments Transferor\nComments Transferor moves the comments posted on a specific issue to another one. It only transfers the comments, not the issue itself. It is handy when you want to make a copy of the conversation on a fixed issue to a dynamic one.\n\n## Workflow example\nLet's say you put the following YAML file on [`noraworld/social-media-recorder`](https://github.com/noraworld/social-media-recorder/blob/main/.github/workflows/comments-transferor.yml). It moves the comments on [issue #1 of `noraworld/social-media-recorder`](https://github.com/noraworld/social-media-recorder/issues/1) to the latest issue of `noraworld/foo` every time they are posted.\n\n```yaml\nname: Comments Transferor\n\non:\n  issue_comment:\n    types: [created]\n\njobs:\n  build:\n    if: ${{ github.event.issue.number == 1 }}\n    runs-on: ubuntu-latest\n    concurrency:\n      group: comments-transferor\n      cancel-in-progress: true\n    steps:\n      - name: Transfer comments\n        uses: noraworld/comments-transferor@main\n        with:\n          target_issue_repo: noraworld/foo\n          target_issue_number: latest\n          personal_access_token: GH_TOKEN\n          replace_twitter_short_url: true\n          trim_empty_image_tag: true\n          linkify_hashtags: true\n          linkify_mentions: true\n          move_trailing_urls_to_next_lines: true\n          remove_spaces_after_japanese_punctuation: true\n          trim_misskey_profile_icon_url: true\n          replace_misskey_image_url_with_multiple_ones: true\n          time_format_replacement_regex: \"on.*?$\"\n          time_format: \"'on' LLLL d, yyyy 'at' h:mm a\"\n        env:\n          GH_TOKEN: ${{ secrets.GH_TOKEN }}\n```\n\nSome online services have a limit specifying the issue where you want to make it post the comments. For instance, IFTTT doesn't provide the option to post the comment to the latest issue. It helps you to do things like that.\n\n### Options\n| Key                                            | Description                                                                        | Example                           | Type    | Required |\n| ---------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------- | ------- | -------- |\n| `issue_repo`                                   | Select a repository with a username whose issue you want to transfer from          | `username/reponame`               | String  | `false`  |\n| `issue_number`                                 | Select an issue number of a repository whose issue you want to transfer from       | `123`                             | String  | `false`  |\n| `target_issue_repo`                            | Select a repository with a username whose issue you want to transfer               | `username/reponame`               | String  | `true`   |\n| `target_issue_number`                          | Select an issue number                                                             | `123` [^target_issue_number]      | String  | `true`   |\n| `personal_access_token`                        | Specify your personal access token name stored in your repository                  | `GH_TOKEN`                        | String  | `false`  |\n| `replace_twitter_short_url`                    | Specify whether Twitter short URLs are replaced with the redirected ones           | `true`                            | Boolean | `false`  |\n| `trim_empty_image_tag`                         | Specify whether the markdown-styled empty image tags are trimmed                   | `true`                            | Boolean | `false`  |\n| `linkify_hashtags`                             | Specify whether the hashtags are turned into the links                             | `true`                            | Boolean | `false`  |\n| `linkify_mentions`                             | Specify whether the mentions are turned into the links                             | `true`                            | Boolean | `false`  |\n| `move_trailing_urls_to_next_lines`             | Specify whether the trailing urls are moved to the next lines                      | `true`                            | Boolean | `false`  |\n| `remove_spaces_after_japanese_punctuation`     | Specify whether the spaces after Japanese punctuation are removed                  | `true`                            | Boolean | `false`  |\n| `trim_misskey_profile_icon_url`                | Specify whether the Misskey profile icon URL is removed                            | `true`                            | Boolean | `false`  |\n| `replace_misskey_image_url_with_multiple_ones` | Specify whether to retrieve multiple images and replace the URL with multiple ones | `true`                            | Boolean | `false`  |\n| `time_format_replacement_regex`                | Specify a regular expression to replace time expressions                           | `\"on.*?$\"`                        | String  | `false`  |\n| `time_format`                                  | Time format to replace                                                             | `\"'on' LLLL d, yyyy 'at' h:mm a\"` | String  | `false`  |\n\n[^target_issue_number]: You can use the special character `latest` to specify the latest issue on a repository you select.\n\n## Development\n```shell\ncp -i .env.sample .env\nnode --env-file=.env app.js\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoraworld%2Fcomments-transferor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoraworld%2Fcomments-transferor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoraworld%2Fcomments-transferor/lists"}