Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-40367

Investigate making use of categories in with SCM 2.0 API

    Details

    • Similar Issues:
    • Epic Link:

      Description

      The new SCM API allows:

      • Plugins can provide custom categories (e.g. Branches, Pull Requests, Tags, etc)
      • Categories are localizable and can have an ordinal value
      • SCMSource.getCategories() can be used to fetch the categories for a scm source

      In Scope

      • We'd like new categories to show up in Blue Ocean in the same way that Branches show up in Blue Ocean today.
      • We use the SCMSource's provided names and ordering returned from `getCategories` as tabs in the UI.
      • Remove our concept of "branches" and "pull requests"?

        Attachments

          Issue Links

            Activity

            Hide
            jamesdumay James Dumay added a comment - - edited

            Patrick Wolf Stephen Connolly this is what it will take for us to support "tags"

            Show
            jamesdumay James Dumay added a comment - - edited Patrick Wolf Stephen Connolly this is what it will take for us to support "tags"
            Hide
            hrmpw Patrick Wolf added a comment -

            And other implementations such as Gitlab, Gogs, etc that don't use the term "Pull Requests"

            Show
            hrmpw Patrick Wolf added a comment - And other implementations such as Gitlab, Gogs, etc that don't use the term "Pull Requests"
            Hide
            jamesdumay James Dumay added a comment -

            Patrick Wolf that's right - it would encompass work for any other implementations we might want to support.

            Show
            jamesdumay James Dumay added a comment - Patrick Wolf that's right - it would encompass work for any other implementations we might want to support.
            Hide
            jamesdumay James Dumay added a comment - - edited

            Stephen Connolly will the SCMCategory have ordinal value? e.g. if I call getCategories will the returned collection order always be the same?

            Show
            jamesdumay James Dumay added a comment - - edited Stephen Connolly will the SCMCategory have ordinal value? e.g. if I call getCategories will the returned collection order always be the same?
            Hide
            stephenconnolly Stephen Connolly added a comment -

            They will always have the same name... there is getName() which returns a name for use in URLs. there is getDisplayName() which returns a localized name in the current locale (we can adapt the API to return the localizable directly if you need that access to all the translations).

            The collection you get from the API will always be in getName() sorted order under Locale.ENGLISH. If you add a second source then the display name / name may get modified...

            For example, one source has Pull Requests under the name pull-requests... another source has Change Requests under the name change-requests... these are both the same category, so when a multibranch project has multiple sources they will be combined into change-requests_pull-requests as the getName() and the getDisplayName() will be Change Requests / Pull Requests...

            To give you a more concrete example...

            If you have an Accurev source and a GitHub source in the same multibranch project (because say you are migrating from Accurev to GitHub) you could then have:

            • An UnclassifiedSCMHeadCategory with a name of default and a display name of Branches / Streams
            • A ChangeRequestSCMHeadCatgeory with a name of pull-requests and a display name of Pull Requests (because Accurev does not have change requests as a concept
            • A (to be implemented) TagSCMHeadCategory with a name of snapshots_tags and a display name of Snapshots / Tags

            If all this was in an organization folder, then the organization folder will have an UnclassifiedSCMSourceCategory with a name of default and a display name of Depots / Repositories

            All because Accurev uses a different set of idiomatic names for the concepts.

            Show
            stephenconnolly Stephen Connolly added a comment - They will always have the same name... there is getName() which returns a name for use in URLs. there is getDisplayName() which returns a localized name in the current locale (we can adapt the API to return the localizable directly if you need that access to all the translations). The collection you get from the API will always be in getName() sorted order under Locale.ENGLISH. If you add a second source then the display name / name may get modified... For example, one source has Pull Requests under the name pull-requests ... another source has Change Requests under the name change-requests ... these are both the same category, so when a multibranch project has multiple sources they will be combined into change-requests_pull-requests as the getName() and the getDisplayName() will be Change Requests / Pull Requests ... To give you a more concrete example... If you have an Accurev source and a GitHub source in the same multibranch project (because say you are migrating from Accurev to GitHub) you could then have: An UnclassifiedSCMHeadCategory with a name of default and a display name of Branches / Streams A ChangeRequestSCMHeadCatgeory with a name of pull-requests and a display name of Pull Requests (because Accurev does not have change requests as a concept A (to be implemented) TagSCMHeadCategory with a name of snapshots_tags and a display name of Snapshots / Tags If all this was in an organization folder, then the organization folder will have an UnclassifiedSCMSourceCategory with a name of default and a display name of Depots / Repositories All because Accurev uses a different set of idiomatic names for the concepts.
            Hide
            jamesdumay James Dumay added a comment -

            Patrick Wolf I will put this ticket on hold until we get concrete requirements after you've got the green light on your proposal

            Show
            jamesdumay James Dumay added a comment - Patrick Wolf I will put this ticket on hold until we get concrete requirements after you've got the green light on your proposal
            Hide
            hrmpw Patrick Wolf added a comment -

            James Dumay using categories is somewhat orthogonal to getting that in. We will need categories used for P4, Gogs, etc, anyway.

            Show
            hrmpw Patrick Wolf added a comment - James Dumay using categories is somewhat orthogonal to getting that in. We will need categories used for P4, Gogs, etc, anyway.
            Hide
            jamesdumay James Dumay added a comment -

            Patrick Wolf I'd rather pick this up when we have a functional use case for it. p4, gogs, etc are a while off.

            Show
            jamesdumay James Dumay added a comment - Patrick Wolf I'd rather pick this up when we have a functional use case for it. p4, gogs, etc are a while off.

              People

              • Assignee:
                Unassigned
                Reporter:
                jamesdumay James Dumay
              • Votes:
                2 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated: