Skip to content

When a project github repo is created, launch the sync process for that project and github repo #971

@begedin

Description

@begedin

Blocked by #1131

The process imports all issues and comments from the github repo into the codecorps project.

Later on, we should refines the process further so it potentially does not happen automatically, or, at least, requires confirmation from the user and shows some progress information on the UI.

This issue should serve as a good place for discussing it.

Potential concerns

The github repo that just got linked to the current project may have also been previously linked to other projects

This is not really a problem, since we only sync from github to cc, not the other way around.

Time assessments

  • 4 hours to create function (in a suitable new or existing module) which, for a provided ProjectGithubRepo
    • pulls list of issues for associated GithubRepo
    • for each issue, creates Task on associated Project
    • test function behavior
  • 3 hours to, on the ember side of things, add a "sync now" button on the project integration page, which hits a new project/:id/sync endpoint. The endpoint will respond with a list of ProjectGithubRepo records all marked as processed, so we push those into the store.
    • the ProjectGithubRepo component on the integration page now needs a processing state
  • 4 hours to implement endpoint behavior
    • load Project, preload all ProjectGithubRepo records, respond with those (we can use update_all with returns: true, so it returns updated records.
    • launch an async process which for each ProjectGithubRepo
      • launches function from step 1
      • tags as processed when done
      • test

Notes

We could simplify the processing status and shave an hour or two off by having one async process on the whole Project instead on individual ProjectGithubRepo records and have the processing flag on the project itself. However, that would end up being more hours in total, if we want to switch to step-based later.

Future enhancements

Before we have real time processing via channels

  • 2 hours to have the integration page check for progress from the server, by refreshing the ProjectGithubRepo records periodically. Otherwise, MPV requires the user to refresh manually.

Once we have some real time processing implemented via channels

  • 1 hour to notify client via channel when a ProjectGithubRepo is processed
  • 0 additional hours for the client to handle this, since presumably, this will be implemented as a generalized solution at a service/adapter level

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions