WO2015186256A1 - Development support system - Google Patents

Development support system Download PDF

Info

Publication number
WO2015186256A1
WO2015186256A1 PCT/JP2014/065140 JP2014065140W WO2015186256A1 WO 2015186256 A1 WO2015186256 A1 WO 2015186256A1 JP 2014065140 W JP2014065140 W JP 2014065140W WO 2015186256 A1 WO2015186256 A1 WO 2015186256A1
Authority
WO
WIPO (PCT)
Prior art keywords
branch
information
development
repository
social coding
Prior art date
Application number
PCT/JP2014/065140
Other languages
French (fr)
Japanese (ja)
Inventor
中村 秀樹
晶 田中
前岡 淳
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/065140 priority Critical patent/WO2015186256A1/en
Priority to JP2015556316A priority patent/JP5973091B2/en
Publication of WO2015186256A1 publication Critical patent/WO2015186256A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs

Definitions

  • the present invention relates to a program development technique, and more particularly to a technique that is effective when applied to a development support system that supports program development using a social coding system.
  • the social coding system has, for example, a function for creating a branch for development / modification in a repository and a Pull request function for merging a branch including a development product into the repository.
  • An example of the social coding system is GitHub (Non-Patent Document 1).
  • JP 2013-191003 A (Patent Document 1) describes a branch that automatically creates a branch from a pending registration by linking the repository management system and the pending management system.
  • a repository management system is described.
  • Non-Patent Document 1 uses, for example, an issue management function to manage development products and issues in association with each other, and after designers discuss problems and new functions Development of programs and other software in such a way that the developer actually corrects the source code, releases the correction difference, performs the source code review by the reviewer, and merges (integrates) it into the repository if there is no problem. It is a tool to support.
  • the branch repository management system described in Patent Document 1 is not a system that assumes a social coding system, but simply generates a branch as an association between a concern and a branch. The problem cannot be solved.
  • the branch repository management system described in Patent Document 1 is applied to program development using a social coding system, it is recommended that problems be registered in small units. Issue) is registered, and as a result, many branches are created, and there is a problem that the operability of branch operations such as selection and display of branches is greatly reduced.
  • an object of the present invention is to provide a development support system that automatically associates issues (issues), branches, commits, and the like while suppressing the number of branches generated corresponding to the issues (issues) in a social coding system. It is in.
  • a development support system includes a repository management system that holds a development product and its change history in a repository, and a social coding system that manages the development product and a problem in association with each other.
  • the social coding system includes: an assignment management unit that manages information on the assignment; and a branch processing unit that generates a branch in the repository, wherein the branch processing unit is designated. Based on the information on the issue, a first branch that is a branching source is identified and branched from the first branch to generate a second branch corresponding to the issue.
  • the association of issues (issues), branches, commits, etc. is automatically performed while the number of branches generated corresponding to the issues (issues) is suppressed. By doing so, it becomes possible to improve the work efficiency in the source code correction work, and hence the software development work.
  • (A), (b) is the figure which showed the outline
  • FIG. 14 is a diagram showing an outline of a configuration example of a conventional development support system using a social coding system.
  • the development support system 1 has a configuration in which each information processing system of the social coding system 100 and the repository management system 200 and a user terminal 400 that is an information processing terminal of a plurality of users are connected via a network 500. . Furthermore, you may have the task management system 300 which manages a task separately.
  • the repository management system 200 includes, for example, a repository management unit 210 that manages a repository held in a repository database (DB) 201, a branch management unit 220 that manages a branch created on the repository, and for development in the repository.
  • a merge processing unit 230 that merges (integrates) the branch that has been created and branched is merged with the branch that is the branch source.
  • Each of these units is implemented by, for example, a software program.
  • the social coding system 100 includes, for example, a user authentication unit 110 that performs processing such as authentication for a user such as a developer, and a problem (Issue in a development project held in the problem DB 101, hereinafter simply referred to as “issue”. And a branch processing unit 130 that performs various processes on the branch on the repository via the repository management system 200. Each of these units is also implemented by, for example, a software program.
  • the social coding system 100 for example, the above-described GitHub, GitLab, and the like are known.
  • the assignment management unit 120 may be replaced by the assignment management unit 310 of the assignment management system 300, or may be configured to manage the assignment DB 101 in parallel.
  • Each user terminal 400 used by each developer has a social coding client 410 that is a client application of the social coding system 100.
  • the social coding client 410 allows each developer to perform development related to an issue, so that a part or all of a repository including a branch created for development can be imported from the repository DB 201 to the local repository DB 401 as necessary.
  • Each unit includes a repository processing unit 411 for performing processing related to the repository, and an issue processing unit 412 for managing issues to be developed.
  • the social coding client 410 may be entirely or partially implemented as a dedicated client application program, or may be implemented as a web application that runs on a web browser in cooperation with the social coding system 100. .
  • FIG. 15 is a diagram showing an outline of an example of a work flow at the time of development in a conventional development support system using a social coding system.
  • a designer or a development leader or the like examines new function development or countermeasures for defects (bugs) (S1).
  • the problem created as the examination result is newly registered in the problem DB 101.
  • information representing the problem for example, a change slip is issued on the system in the case of function development, and a failure slip is issued on the system in the case of failure countermeasures.
  • response is started based on the registered issue (issued change slip or defect slip) (S2). More specifically, a management branch is created on the repository DB 201 for development related to the subject.
  • the processing so far is performed on the social coding system 100 and the repository management system 200 by a designer, a development leader, a project manager, or the like (hereinafter, these may be collectively referred to as “leader”). It is normal.
  • the developer takes in the above management branch into the local repository DB 401 and creates a branch for the developer (S3). Thereafter, the developer performs development corresponding to the created developer branch (S4). Specifically, source code is created / modified, a manual test is performed, and the source code after the test is registered (committed) in the developer branch. Furthermore, a fetch request (Pull request) to the management branch is made for the developed part (S5). Specifically, the latest management branch is fetched from the repository DB 201 to the local repository DB 401, reflected in the developer branch, and then requested to the repository management system 200 for fetching to the management branch (Pull). Request).
  • the reader reviews the development contents in the developer branch on the social coding system 100, performs an automatic test or the like as necessary, and if there is no problem, merges it into the management branch. Capture (S6). After that, further review as a task is performed, an automatic test or the like is performed as necessary, and if there is no problem, this is taken in by merging into the main branch and released to the production environment or the like (S7).
  • steps S2 and S3 a branch for management is created for each function development or defect handling case, and a developer branch is provided for each developer so as to enable distributed development by a plurality of developers.
  • these branches need to be created manually, which is complicated and has a high workload.
  • step S4 When the source code is developed in step S4 and the test is completed, the development branch is committed. Since each commit corresponds to the issue created in step S1, each commit is performed. Although it is necessary to associate with a corresponding problem, this also needs to be done manually at present, and is complicated and has a high workload.
  • step S5 a Pull request is created in order to merge the development part related to the commit performed in step S4 into the corresponding management branch.
  • the processing is premised on merging between the branches. Therefore, it is necessary to specify a developer branch as a merge source and a management branch as a merge destination at the time of a Pull request, but this also needs to be done manually at present.
  • FIG. 16 to FIG. 18 are diagrams for explaining the situation in development in the conventional development support system as described above in more detail.
  • FIG. 16 is a class diagram showing an example of the relationship of data handled in development in a conventional development support system.
  • the social coding system 100 or the problem management system 300 manages problems.
  • the social coding system 100 manages Pull requests.
  • the repository management system 200 (including the local repository DB 401 on the user terminal 400) manages branches and commits.
  • the problem is divided into a change slip that manages function addition items and a failure slip that manages defect correction.
  • a function development branch or defect correction branch corresponding to the problem is created as a management branch on the repository of the repository management system 200.
  • these branches need to be created manually at present. Therefore, it is also necessary to manually perform association (link creation) between the change slip or defect slip and the function development branch or failure correction branch (indicated by a dotted line in the drawing).
  • association link creation
  • a developer branch (development branch for function development or developer branch for defect correction) is provided for each developer so that multiple developers can independently perform distributed development in parallel.
  • a developer branch (development branch for function development or developer branch for defect correction) is provided for each developer so that multiple developers can independently perform distributed development in parallel.
  • each commit corresponds to an issue. Therefore, it is necessary to make an association with the corresponding issue (actually the corresponding change slip or defect slip) for each commit, but this must also be done manually at present (indicated by dotted lines in the figure) ) As shown in the figure, a commit can be divided into a plurality of items for registration.
  • a Pull request is created in order to merge (integrate) the development branch corresponding to the commit into the corresponding management branch (function development branch or defect correction branch).
  • the actual branch merge process is performed after review, approval, etc. for the Pull request.
  • the Pull request it is necessary to specify the developer branch that is the merge source and the management branch that is the merge destination.
  • a Pull request always corresponds to one of the issues (actually corresponding change slip or defect slip), but in order to associate them with the system and manage them, for example, the issue corresponding to the comment of the Pull request It is necessary to manually describe the identification information of these (in the figure, the relationship is indicated by a dotted line).
  • Plural requests are associated with a plurality of commits, but if a merge-source development branch and a merge-destination management branch are specified, the merge request is not in the merge-destination management branch. Commits, that is, all commits that are registered by branching from the merge destination management branch to the merge source development branch. Normally, in the repository management system 200, a branch is always created by being derived from one parent branch, that is, every branch is always created by branching from a part of the parent branch. A commit corresponding to the Pull request can be identified.
  • FIG. 17 is a diagram illustrating an example of a specific correspondence between the issues, the management branch, the development branch, the commit, and the Pull request as described above. That is, in the function development case, the change slip and the function development branch are associated one-to-one, and the function development branch is associated with the function development developer branch for each developer on a one-to-many basis.
  • a function development developer branch is associated with a plurality of commits (function development modification commits) in a one-to-many manner.
  • a plurality of function development modification commits are associated with one Pull request (function development modification Pull request) in a many-to-one relationship, and this function development modification Pull request is associated with the change slip on a one-to-one basis.
  • the correspondence between the function development branch and the function development developer branch is associated with the function development modification Pull request on a one-to-one basis. That is, the development part related to the developer branch for function development of each developer is merged into the branch for function development by one function development modification Pull request. Note that the correspondence as described above is the same in the defect countermeasure case, and thus the description thereof will be omitted.
  • FIG. 18 is a diagram showing an outline of examples of processing images in the repository management system 200 and the social coding system 100.
  • the local repository DB 201 of the repository management system 200 shows a state in which a branch hierarchical structure is held.
  • a clone (copy) is created in the local repository DB 401 of the user terminal 400 for each developer for all or part of the contents of the repository, and development is performed based on the clone.
  • the repository on the local repository DB 401 in which the completed development content is registered is pushed (reflected) to the repository DB 201 of the repository management system 200.
  • the development support system starts the development work from the latest state as much as possible by automatically creating branches at the timing when branch creation is necessary, thereby minimizing the number of branches. It can be so. Also, by automatically associating assignments, branches, commits, and pull requests, the workload is reduced and the work efficiency in software development work is improved.
  • a branch corresponding to the task is automatically created.
  • a branch source branch is automatically specified based on the created task information.
  • the branch is automatically created at the timing of the creation of the assignment, and the association between the assignment and the branch is automatically performed (for example, according to a branch naming rule).
  • the identification information of the change slip or defect slip corresponding to the branch is determined, and the information is given to the commit comment.
  • the association between the commit and the issue is automatically performed.
  • the branch that becomes the merge destination (branch source) is determined, and based on the information, the merge destination that is required when creating the Pull request And automatically specify and complete the merge source branch name. Thereby, the Pull request is automatically associated with the branch and the assignment.
  • FIG. 1 is a diagram showing an outline of a configuration example of a development support system according to an embodiment of the present invention.
  • the development support system 1 includes information processing systems such as the social coding system 100 and the repository management system 200, and information processing terminals of a plurality of users.
  • a user terminal 400 is connected via a network 500.
  • the social coding system 100 (or issue management system 300) has an issue DB 101
  • the repository management system 200 has a repository DB 201.
  • the social coding system 100 and the repository management system 200 are application servers, and the assignment DB 101 and the repository DB 201 are configured as DB servers.
  • Each of these application servers and DB servers may be configured by server devices, or may be configured by one instance of a virtual server configured on a server device or a cloud computing service. Moreover, you may be comprised by mixing these.
  • each of these servers has an independent configuration, but all or a part of them may be integrated into one server device or the like.
  • the connection between the social coding system 100 and the assignment DB 101 or between the repository management system 200 and the repository DB 201 is not limited to a dedicated line, and may be connected via the network 500.
  • the network 500 may be either the Internet or an intranet, and the physical layer is not particularly limited, such as a wired LAN (Local Area Network), a wireless LAN, or a packet line.
  • the repository management system 200 is similar to the conventional development support system 1 shown in FIG. 14, for example, a repository management unit 210 that manages a repository held in the repository DB 201, a branch that manages a branch created on the repository The management unit 220, and a merge processing unit 230 that merges a branch created and branched for development in the repository into a branch source branch.
  • a repository management unit 210 that manages a repository held in the repository DB 201
  • a branch that manages a branch created on the repository The management unit 220
  • a merge processing unit 230 that merges a branch created and branched for development in the repository into a branch source branch.
  • Each of these units is implemented by, for example, a software program.
  • Git which is an open source distributed repository management tool
  • other distributed repository management tools such as Mercurial (hg) can also be used.
  • hg Mercurial
  • the development support system 1 of the present embodiment is in principle. It is possible to apply to.
  • the social coding system 100 is, for example, similar to the conventional development support system 1 shown in FIG. 14, a user authentication unit 110 that performs processing such as authentication for a user such as a developer, and development projects held in the problem DB 101. And a branch processing unit 130 that performs various processes for the branch on the repository via the repository management system 200. Each of these units is implemented by, for example, a software program.
  • the assignment management unit 120 may be replaced by the assignment management unit 310 of the assignment management system 300, or may be configured to manage the assignment DB 101 in parallel.
  • the social coding system 100 further includes a pull request processing unit 140 that receives pull requests from each user terminal 400 and performs processing related thereto.
  • the issue management unit 120, the branch processing unit 130, and the pull request processing unit 140 according to the present embodiment have a function for automatically associating issues, branches, commits, and pull requests as described above. ing. Details of these functions will be described later.
  • the user terminal 400 is an information processing terminal such as a PC (Personal Computer) used by a developer, but may be a portable terminal such as a smartphone or a tablet terminal.
  • the user terminal 400 includes a social coding client 410 that is a client application of the social coding system 100 and a local repository DB 401.
  • the social coding client 410 includes various units such as a repository processing unit 411 for performing processing related to a repository and an issue processing unit 412 for managing issues to be developed.
  • the social coding client 410 further includes a commit processing unit 413 that performs processing for committing (registering) the developed source code and the like to the development branch, and for management on the repository management system 200.
  • Each unit includes a pull request creation unit 414 that performs processing related to creation of a pull request for requesting incorporation into a branch.
  • Each unit of the social coding client 410 according to the present embodiment has a function for automatically associating assignments, branches, commits, and pull requests as described above in cooperation with the social coding system 100. ing.
  • FIG. 2 is a diagram showing an outline of a configuration example by branching on the repository in the present embodiment.
  • FIG. 3 is a table summarizing the branch types and naming conventions shown in FIG. In FIG. 2, the time series is shown in the horizontal direction (time t has passed from left to right), and the type of branch is shown in the vertical direction.
  • a black circle represents a commit, that is, a fixed source code modification difference.
  • the latest development branch is “trunk”. This is a branch to which all functions of the latest version are added (referred to as “latest development branch”), and becomes a main branch in new function development (enhancement development).
  • latest development branch a branch to which all functions of the latest version are added
  • new function development enhanced development
  • a branch “feature / C001 / DEV” is created by branching upward from the “trunk” branch.
  • This is a branch for management for developing a new function “C001” by a team (generally called “branch for function development”), and is a branch for storing development products of the entire team.
  • a branch “feature / C001 / user2” is created by further branching from the “feature / C001 / DEV” branch.
  • This is a branch dedicated to the developer “user2” who develops the function “C001” (collectively referred to as “developer branch for function development”), and is a branch for storing work products of “user2” individuals.
  • developer branch for function development a branch for storing work products of “user2” individuals.
  • branches “stable / v0001” and “stable / v0002” are created by branching downward from the “trunk” branch. These are branches (collectively referred to as “stable branches”) that store reference versions of items that have already been shipped, such as packaged products, and require maintenance such as dealing with defects. It becomes the main branch for defect correction.
  • stable branches that store reference versions of items that have already been shipped, such as packaged products, and require maintenance such as dealing with defects. It becomes the main branch for defect correction.
  • a branch “fix / B011 / v0001 / DEV” is created by further branching from the “stable / v0001” branch.
  • This is a management branch (collectively referred to as “defect correction branch”) for dealing with the defect “B011” by the team, and a correction created for the defect “B011” by the entire team.
  • a branch that stores code By assigning a branch name according to the naming rule shown in FIG. 3, the type and version of the branch (“v0001” in the example of FIG. 2) and the defect name (“B011” in the example of FIG. 2) are grasped from the branch name. can do.
  • a branch “fix / B011 / v0001 / user1” is created by further branching from the “fix / B011 / v0001 / DEV” branch.
  • This is a branch dedicated to the developer “user1” that handles the defect “B011” (collectively referred to as “defect correction developer branch”), and is a branch that stores the work product of the individual “user1”. It is.
  • branch names By assigning branch names according to the naming rules shown in FIG. 3, the branch name to branch type and version (“v0001” in the example of FIG. 2), defect name (“B011” in the example of FIG. 2), and development The user (“user1" in the example of FIG. 2).
  • a branch for developers (such as “Developer branch for function development” or “Developer branch for defect correction”) is created when function development and defect correction are performed directly by the developer, not by the team. It is also possible to set it not to operate.
  • branch naming rules are not limited to those shown in FIG. 3, but as described above, “latest development branch” / “function development branch” / “function development developer branch”. , And “stable branch” / “branch correction branch” / “defect correction developer branch”, a parent-child relationship is established between the branches, and the relationship is named so that the relationship can be grasped from the branch name. It is assumed that
  • FIG. 4 is a diagram showing an overview of the data configuration of the task management information 101a, which is one of the tables in the task DB 101, and specific data examples.
  • FIG. 4A shows a data structure
  • FIG. 4B shows a specific example of data.
  • the assignment management information 101a is a table that holds information about the contents of each assignment, and includes items such as an assignment ID, a title, details of contents, a person in charge, a milestone, a state, and a label ID list.
  • the item of issue ID holds information such as ID and sequence number that can uniquely identify each issue.
  • the title item holds information on the title and name assigned to the target task. As shown in FIG. 4B, the title format is, for example, “[issue identifier] _text”, and includes information on an issue identifier (for example, “C001”) that can uniquely identify each issue. It may be. In the case where the value of the above-mentioned assignment ID item is used as the assignment identifier, the assignment identifier may not be included in the title item.
  • Detailed content item stores detailed information about the content of the subject. For example, information describing the contents of corresponding function development or defect correction can be included.
  • the item of the person in charge holds information for specifying the person in charge, the manager, the person in charge, etc. of the subject issue.
  • the milestone item holds milestone information indicating which version of the target issue is to be dealt with.
  • the status item holds information on the status and status of the target task.
  • the item of the label ID list holds information of a list of label IDs that specify one or more labels set for the target task. Each label ID is defined in a table of label information described later.
  • the task management information 101a includes, for example, each of function development and defect correction so that, when the task is function development or defect correction, information relating to the contents can be specialized and retained. You may have a table for every subject.
  • FIG. 5 is a diagram showing an outline of an example of the data configuration of the development function information 101b that holds information related to the contents of the function to be developed in a case where the problem is function development.
  • FIG. 6 is a diagram showing an outline of an example of a data configuration of defect information 101c that holds information related to the content of the defect to be corrected, specialized when the problem is defect correction.
  • the items of the development function ID of the development function information 101b and the defect ID of the defect information 101c are items corresponding to the problem ID of the problem management information 101a, respectively.
  • the defect information 101c includes an item of an occurrence version that holds information on a version in which the target defect has occurred.
  • FIG. 7 is a diagram showing an overview of the data configuration of the label information 101d, which is one of the tables in the assignment DB 101, and specific data examples.
  • the label information 101d is a master table that holds definition contents of information obtained by labeling and encoding information such as various character strings set for the task, and includes items such as a label ID and a label name.
  • the label ID item holds information such as an ID and a sequence number that can uniquely identify each label.
  • the label name item holds information such as a character string of a label corresponding to the label ID.
  • each table shown in FIGS. 4 to 7 is merely an example, and other table configurations and data configurations can be used as long as similar data can be held and managed. It may be.
  • Automatic branch generation In the present embodiment, as described above, for example, when a task (change slip or defect slip) is created in step S1 of FIG. 15 or when the state of the task changes, the task in steps S2 and S3 of FIG. Based on the information, a branch corresponding to the subject can be automatically generated.
  • the automatic branch generation process will be described below.
  • step S2 of FIG. 15 When the management branch (“functional development branch” or “defect correction branch”) in step S2 of FIG. 15 is automatically generated, for example, in the problem processing unit 412 of the user terminal 400 shown in the example of FIG.
  • the task management unit 120 of the social coding system 100 registers the task in the task DB 101 in cooperation with the task. Or correct it.
  • the branch processing unit 130 is called with the registration / correction in the problem DB 101 as a trigger, and the branch processing unit 130 generates a branch corresponding to the problem.
  • FIG. 8 is a flowchart showing an outline of an example of a flow of automatic branch generation processing in the branch processing unit 130.
  • a task identifier that can uniquely identify the task is extracted from the task information (S01).
  • the problem identifier include a development item in function development and an ID assigned corresponding to the indicated defect in defect correction.
  • the ID of a change slip for example, “C001”, etc.
  • the ID of a failure slip for example, “B011”, etc.
  • the first character of the ID is “C” (Change)
  • the first character of the ID is “B” (Bug). It is possible to determine whether it is a change slip or a failure slip.
  • Other items may be used as the assignment identifier as long as the assignment can uniquely identify the assignment.
  • the branch identifier 130 or the task manager 120 of the social coding system 100 accesses the task DB 101 to extract the portion corresponding to the task identifier from the task ID of the target task or the title item. can do.
  • the format of the assignment title is, for example, “[assignment identifier] _text”, and information on the assignment identifier is extracted from the character string of the title. Is possible.
  • version information may be acquired by processing to be described later and added to the information of the issue identifier.
  • the social coding system 100 has been described on the assumption that the problem DB 101 has the problem management and the problem is managed by the problem management system 300 independent of the social coding system 100. May refer to the task information managed by the task management system 300 and extract the task identifier.
  • step S02 it is determined whether or not the problem is compatible with the defect (S02). If the problem is compatible with the defect, information on the version in which the problem has occurred is acquired (S03). In the case of function development in which the problem is not dealing with defects, the process proceeds to step S04 without performing step S03.
  • the branch processing unit 130 or the problem management unit 120 accesses the problem DB 101, and acquires the value of the item in the label ID list for the target problem from the problem management information 101a. Then, for each label ID in the label ID list, all the labels corresponding to the task are acquired by acquiring the value of the label name item from the label information 101d.
  • a label indicating the version is included.
  • the character string “1, 3, 5” is used as the label ID list. Is obtained. This is divided by a comma (“,”) to obtain three label IDs “1”, “3”, and “5”.
  • label information 101d shown in the example of FIG. 7B character strings (labels) of “v0100”, “defective”, and “WIP” can be obtained, respectively.
  • each obtained label is a character string representing a version depends on whether or not it matches a predetermined regular expression (for example, “/ v [0-9] ⁇ 4 ⁇ ”, etc.). If it matches, the character string representing the version is used.
  • a predetermined regular expression for example, “/ v [0-9] ⁇ 4 ⁇ ”, etc.
  • the label ID list item of the problem management information 101a and the label ID item of the label information 101d are extracted.
  • it is acquired from the label name of the label information 101d, but is not limited to this.
  • the problem information is managed not by the problem management information 101a but by a data configuration such as the defect information 101c in FIG. You may make it use the value of an item as it is.
  • the branch processing unit 130 of the social coding system 100 determines whether there is a branch corresponding to the task (S04).
  • the branch processing in step S04 for example, when the problem identifier extracted in step S01 relates to a function development problem, the branch management of the repository management system 200 for the branch name generated based on the problem identifier is performed.
  • the repository DB 201 is searched through the unit 220 to determine whether there is a target branch.
  • “C001” is set as the task identifier from the title item in step S01. Since it is obtained, a branch name “feature / C001 / DEV” is generated in accordance with the naming rule of the function development branch shown in FIG. 3, and the presence or absence is confirmed on the repository DB 201.
  • the repository management system 200 uses the branch name generated based on the problem identifier and the generated version acquired in step S03.
  • the repository DB 201 is searched via the branch management unit 220 to determine whether there is a target branch.
  • step S04 If the branch corresponding to the issue is already in the repository in step S04, nothing is done (NOP: No OPeration) (S08), and the automatic branch generation process is terminated. On the other hand, if there is no branch corresponding to the task in step S04, next, a label indicating whether the status of the target task is working, that is, the task information of the target task is working. It is determined whether or not there is (S05).
  • the value of the item in the label ID list is acquired from the problem management information 101a for the target problem, and the corresponding label name is acquired from the label information 101d for each label ID included in the list.
  • the task management information 101a displays the label ID.
  • the label information 101d shown in the example of FIG. 7B can be used to obtain “v0100”, “defect”, and “WIP”, respectively. Can be obtained. Since the label of “WIP” indicating work is included in this, it is determined that the subject task is being worked.
  • step S05 If it is determined in step S05 that the task is not being worked on, nothing is done (NOP) (S08), and the automatic branch generation process is terminated.
  • the branch that is the branching source for generating this is specified based on the branch name generated in step S04 (S06).
  • the branch that is the branching source can be specified based on, for example, information on the naming rules for each branch and the branching source branch shown in FIG. For example, if the branch name generated in step S05 is “fix / B003 / v0100 / DEV”, it can be seen from the naming convention of the table of FIG. It can be specified that the branch name of the branch source branch is “stable / v0100”.
  • step S04 a branch related to the branch name generated in step S04 is newly generated from the branch related to the branch name specified in step S06 via the branch management unit 220 of the repository management system 200 (S07).
  • the automatic generation process is terminated.
  • step S3 in FIG. 15 Even when the developer branch ("developer branch for function development” or “developer branch for defect correction”) in step S3 in FIG. 15 is automatically generated, the basic processing is the processing content shown in FIG. It is the same.
  • the problem management unit 120 of the social coding system 100 accesses the problem DB 101 to perform problem management. A process of acquiring the value of the person in charge related to the subject problem in the information 101a is performed. If information on the person in charge cannot be acquired in this process, nothing is done (NOP) (S08), and the automatic branch generation process is terminated.
  • NOP NOP
  • the rule that follows the branch naming rule shown in FIG. 3 is that of the developer branch.
  • “s-naka” is obtained from the item of the person in charge.
  • “B003” is obtained as the assignment identifier from the title item.
  • developer branch may be automatically generated while associating with the issue.
  • the developer branch may be generated together with the new generation of the management branch at the time of issue creation. If the person in charge is not set at this time, the person in charge will be set later.
  • a developer branch may be automatically generated using the event as a trigger.
  • FIG. 9 is a flowchart showing an outline of an example of the flow of the commit comment automatic adding process in the commit processing unit 413.
  • a corresponding problem identifier is extracted from the branch name to be committed (S11).
  • the branch name is “feature / CXXX / ⁇ ”. If the second character string from the top of the character string obtained by dividing the branch name by “/” is obtained, the task identifier (in this case, “CXXX”) can be obtained. Similarly, the “branch branch for defect correction” and “developer branch for defect correction” in the defect correction both have the branch name “fix / BXXX / ⁇ ”, so the characters obtained by dividing the branch name with “/” If the second from the top of the column is acquired, the task identifier (in this case, “BXXX”) can be obtained.
  • the commit processing unit 413 accesses the problem management unit 120 of the social coding system 100 via the network 500, and issues information related to the problem identifier extracted in step S11 in the problem DB 101 via the problem management unit 120. Is determined whether or not is held (S12). Whether or not the task information related to the task identifier is held in the task DB 101 (the task is a management target by the task management unit 120), for example, the subject of the title item of the task management information 101a The determination can be made based on whether or not there is an identifier included. Instead of or in addition to the title item, determination may be made based on whether or not the subject detail identifier is included in the content detail item.
  • the commit processing unit 413 issues the problem ID item and the title item related to the target problem via the problem management unit 120 of the social coding system 100. Are added to the comment at the time of commit (S13), and the commit comment automatic adding process is terminated.
  • FIG. 10 is a diagram showing an outline of an example of a repository display screen displayed by the social coding client 410 on the user terminal 400.
  • the development product is included as a “branch name” in the repository display screen as shown in FIG.
  • the developer branch to be merged is specified, and the “Pull request” button is pressed.
  • the Pull request creation unit 414 of the social coding client 410 is called.
  • the pull request creation unit 414 calls the pull request processing unit 140 of the social coding system 100 via the network 500, and performs automatic designation processing of the branch at the merge destination (branch source).
  • FIG. 11 is a flowchart showing an outline of an example of a flow of automatic branch designation processing in the pull request processing unit 140.
  • the branch name information of the branch currently displayed (designated) on the repository display screen shown in the example of FIG. 10, that is, the branch to be merged is acquired (S21).
  • the Pull request processing unit 140 of the social coding client 410 acquires from the repository display screen and is added as a parameter when the Pull request processing unit 140 of the social coding system 100 is called. Information can be acquired.
  • the merge destination branch is specified from the merge source branch name acquired in step S21 (S22).
  • each branch is named according to a naming rule as shown in FIG. 3, and based on this, a branch name to be merged is specified. That is, it determines which branch in the naming rule shown in FIG. 3 corresponds to the branch name of the merge source, and generates the branch name of the merge destination based on the branch name naming rule of the corresponding branch source (merge destination) To do. For example, if the branch name of the merge source is “fix / B002 / v0100 / h-naka”, it is “branch for developer h-naka of defect B002” (the bottom row in the table of FIG. 3), so the branch As the branch name of the original branch, “fix / B002 / v0100 / DEV” can be obtained based on the naming rule.
  • the Pull request processing unit 140 generates a Pull request screen using the branch name acquired in Step S21 as the merge source branch and the branch name generated in Step S22 as the merge destination branch, and transmits the Pull request screen to the social coding client 410 of the user terminal 400.
  • the screen is displayed (S23).
  • FIG. 12 is a diagram showing an outline of an example of a pull request screen displayed by the social coding client 410 on the user terminal 400. As shown in the drawing, the screen can be displayed in a state where the repository name and branch name of the merge source and merge destination are automatically set and selected.
  • a Pull request creation unit 414 of the social coding client 410 creates a Pull request, which is transmitted to the Pull request processing unit 140 of the social coding system 100 and is sent to the Pull request screen. Processing related to the request is executed.
  • the Pull request processing unit 140 of the social coding system 100 in FIG. When the merge destination branch name is specified based on the naming rule shown in (1), a process for acquiring information on the assignment corresponding to the merge source branch name is also performed.
  • the task information is extracted from the merge source branch name based on the naming rule shown in FIG. 3 in the same manner as steps S11 and S12 of the process shown in FIG. It can be acquired by determining whether or not the task information related to is stored in the task DB 101.
  • FIG. 13 is a diagram showing an outline of an example of a pull request screen displayed by the social coding client 410 on the user terminal 400. As shown in the figure, the screen can be displayed in a state in which the task ID and title information relating to the task corresponding to the merge-source branch (defect “B002” in the example of FIG. 13) is automatically set as a comment. .
  • the number of branches is suppressed as much as possible by automatically creating branches at a necessary timing, and the latest state possible. It is possible to start development work. Further, by automatically associating assignments, branches, commits, and Pull requests, it is possible to reduce the work load and improve the work efficiency in software development work.
  • a branch corresponding to the subject is automatically created according to the naming rule when the issue is created, the status is changed, or the developer is assigned. Also, the branch source branch is automatically specified based on the created task information. This makes it possible to automatically create a branch at the timing of creating a problem and to automatically associate a problem with a branch.
  • the identification information of the change slip or defect slip corresponding to the branch is determined from the branch naming rules, and the information is given to the commit comment. Thereby, the association between the commit and the issue (change vote or defect vote) can be automatically performed.
  • the branch that becomes the merge destination (branch source) is determined from the branch naming rules, and based on the information, the merge destination and the merge required when creating the Pull request are determined. Automatically specify and complete the original branch name. Further, information on the corresponding problem is acquired based on the information of the branch name of the merge source, and this is automatically added as a comment when creating the Pull request. As a result, the Pull request can be automatically associated with the branch and the assignment.
  • the present invention made by the present inventor has been specifically described based on the embodiments.
  • the present invention is not limited to the above-described embodiments, and various modifications can be made without departing from the scope of the invention. Needless to say.
  • the above-described embodiment has been described in detail for easy understanding of the present invention, and is not necessarily limited to the one having all the configurations described.
  • the present invention can be used in a development support system that supports program development using a social coding system.

Abstract

This development support system automatically associates an issue, a branch, a commit and the like while suppressing an increase in the number of branches generated corresponding to the issue in a social coding system. The development support system includes: a repository management system that keeps a developed product and a modification history thereof in a repository; and a social coding system that manages the developed product and the issue in association with each other. The social coding system includes an issue management unit that manages information of the issue, and a branch processing unit that generates a branch in the repository. The branch processing unit identifies a first branch as a branch source on the basis of the information of the issue that has been designated, and generates a second branch branched from the first branch and corresponding to the issue.

Description

開発支援システムDevelopment support system
 本発明は、プログラム開発の技術に関し、特に、ソーシャルコーディングシステムを利用したプログラム開発を支援する開発支援システムに適用して有効な技術に関するものである。 The present invention relates to a program development technique, and more particularly to a technique that is effective when applied to a development support system that supports program development using a social coding system.
 近年では、プログラム開発において、ソースコードや設計資料、仕様書などの開発成果物をリポジトリに登録してバージョン管理や変更履歴管理等を行ういわゆるリポジトリ管理システムに加え、開発案件における課題(Issue)管理の機能や、成果物のレビュー、リポジトリへの反映などの開発プロセスの管理機能などを有するいわゆるソーシャルコーディングシステムが利用されつつある。ソーシャルコーディングシステムでは、例えば、リポジトリにおいて開発・修正用のブランチを作成する機能や、開発成果物を含むブランチをリポジトリにマージするためのPullリクエスト機能などを有している。ソーシャルコーディングシステムとしては、例えば、GitHub(非特許文献1)などがある。 In recent years, in program development, in addition to a so-called repository management system that registers development products such as source code, design documents, and specifications in a repository for version management and change history management, issue management in development projects (Issue) A so-called social coding system having a management function for a development process, such as a function for reviewing a product, reviewing a product, and reflecting it in a repository, is being used. The social coding system has, for example, a function for creating a branch for development / modification in a repository and a Pull request function for merging a branch including a development product into the repository. An example of the social coding system is GitHub (Non-Patent Document 1).
 また、これに関連する技術として、例えば、特開2013-191003号公報(特許文献1)には、リポジトリ管理システムと、懸案管理システムとを連携させ、懸案登録から自動的にブランチを作成するブランチリポジトリ管理システムが記載されている。 As a related technology, for example, JP 2013-191003 A (Patent Document 1) describes a branch that automatically creates a branch from a pending registration by linking the repository management system and the pending management system. A repository management system is described.
特開2013-191003号公報JP 2013-191003 A
 非特許文献1等に記載されたソーシャルコーディングシステムは、例えば、課題管理機能を用いて、開発成果物と課題とを関連付けて管理するとともに、設計者等が不具合や新規機能について議論を行った後、開発者が実際にソースコード等を修正し、その修正差分を公開し、レビュアーによるソースコードレビューを実施し、問題がなければリポジトリにマージ(統合)する、といった流れでプログラム等のソフトウェアの開発を支援するツールである。 The social coding system described in Non-Patent Document 1 and the like uses, for example, an issue management function to manage development products and issues in association with each other, and after designers discuss problems and new functions Development of programs and other software in such a way that the developer actually corrects the source code, releases the correction difference, performs the source code review by the reviewer, and merges (integrates) it into the repository if there is no problem. It is a tool to support.
 しかしながら、例えば、ソースコードの修正差分を管理するために、ソースコードの修正を実施する前にリポジトリ上でブランチを手動で作成する必要がある。また、ソースコードレビューを実施する際に、どの課題(Issue)で議論された内容に係る修正なのかをレビュアーが把握可能とするために、例えば、ソースコードの修正を登録(コミット)する際のコメント(コミットコメント)に課題(Issue)を識別する番号等を手動で付与して関連付けする必要がある。また、修正対象のソースコードについて、レビューが完了した後にどのブランチにマージすべきかの情報を予め手動で指定しておくことも必要となる。 However, for example, in order to manage source code modification differences, it is necessary to manually create a branch on the repository before performing source code modification. In addition, when a source code review is performed, in order to enable a reviewer to grasp which problem (Issue) the correction is related to, for example, when a source code correction is registered (committed) It is necessary to manually associate and associate a number (such as an issue) with a comment (commit comment). In addition, regarding the source code to be corrected, it is also necessary to manually specify in advance which branch should be merged after the review is completed.
 このように、課題(Issue)、ブランチ、コミット等の関連付けを手動で行う必要があることから、ユーザの負担が大きいとともに、例えば、関連付けを失念してしまったり、ミスにより間違って関連付けされてしまったりする場合があるという課題があった。 In this way, since it is necessary to manually associate issues (issues), branches, commits, etc., the burden on the user is heavy, and for example, the association is forgotten or mistakenly associated with a mistake. There was a problem that there was a case where I could get lost.
 また、特許文献1に記載されたブランチリポジトリ管理システムは、ソーシャルコーディングシステムを想定したシステムではなく、単に懸案とブランチとの関連付けとしてブランチの生成を自動的に行うものであり、ソーシャルコーディングシステムにおける上記の課題を解決できるものではない。また、特許文献1に記載されたブランチリポジトリ管理システムを、ソーシャルコーディングシステムを用いたプログラム開発に適用した場合、細かい単位で課題(Issue)を登録することが推奨されることから、多くの課題(Issue)が登録され、その結果多くのブランチが作成されてしまい、ブランチの選択や表示などのブランチ操作の操作性が大きく低下するという課題があった。 Further, the branch repository management system described in Patent Document 1 is not a system that assumes a social coding system, but simply generates a branch as an association between a concern and a branch. The problem cannot be solved. In addition, when the branch repository management system described in Patent Document 1 is applied to program development using a social coding system, it is recommended that problems be registered in small units. Issue) is registered, and as a result, many branches are created, and there is a problem that the operability of branch operations such as selection and display of branches is greatly reduced.
 そこで本発明の目的は、ソーシャルコーディングシステムにおいて、課題(Issue)に対応するブランチの生成数を抑えつつ、課題(Issue)、ブランチ、コミット等の関連付けを自動的に行う開発支援システムを提供することにある。 SUMMARY OF THE INVENTION Accordingly, an object of the present invention is to provide a development support system that automatically associates issues (issues), branches, commits, and the like while suppressing the number of branches generated corresponding to the issues (issues) in a social coding system. It is in.
 本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。 The above and other objects and novel features of the present invention will be apparent from the description of this specification and the accompanying drawings.
 本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。 Of the inventions disclosed in this application, the outline of typical ones will be briefly described as follows.
 本発明の代表的な実施の形態による開発支援システムは、開発成果物およびその変更履歴をリポジトリに保持するリポジトリ管理システムと、前記開発成果物と課題とを関連付けて管理するソーシャルコーディングシステムと、を有する開発支援システムであって、前記ソーシャルコーディングシステムは、前記課題の情報を管理する課題管理部と、前記リポジトリにおいてブランチの生成を行うブランチ処理部と、を有し、前記ブランチ処理部は、指定された前記課題の情報に基づいて、分岐元となる第1のブランチを特定し、前記第1のブランチから分岐させて、前記課題に対応する第2のブランチを生成するものである。 A development support system according to a representative embodiment of the present invention includes a repository management system that holds a development product and its change history in a repository, and a social coding system that manages the development product and a problem in association with each other. The social coding system includes: an assignment management unit that manages information on the assignment; and a branch processing unit that generates a branch in the repository, wherein the branch processing unit is designated. Based on the information on the issue, a first branch that is a branching source is identified and branched from the first branch to generate a second branch corresponding to the issue.
 本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。 Among the inventions disclosed in the present application, effects obtained by typical ones will be briefly described as follows.
 すなわち、本発明の代表的な実施の形態によれば、ソーシャルコーディングシステムにおいて、課題(Issue)に対応するブランチの生成数を抑えつつ、課題(Issue)、ブランチ、コミット等の関連付けを自動的に行うことで、ソースコード修正作業、ひいてはソフトウェア開発作業における作業効率を向上させることが可能となる。 In other words, according to the exemplary embodiment of the present invention, in the social coding system, the association of issues (issues), branches, commits, etc. is automatically performed while the number of branches generated corresponding to the issues (issues) is suppressed. By doing so, it becomes possible to improve the work efficiency in the source code correction work, and hence the software development work.
本発明の一実施の形態である開発支援システムの構成例について概要を示した図である。It is the figure which showed the outline | summary about the structural example of the development assistance system which is one embodiment of this invention. 本発明の一実施の形態におけるリポジトリ上のブランチの分岐による構成例について概要を示した図である。It is the figure which showed the outline | summary about the structural example by the branch of the branch on the repository in one embodiment of this invention. 本発明の一実施の形態におけるブランチの種類および命名規則をまとめた表である。It is the table | surface which put together the kind of branch and naming convention in one embodiment of this invention. (a)、(b)は、本発明の一実施の形態における課題管理情報のデータ構成および具体的なデータの例について概要を示した図である。(A), (b) is the figure which showed the outline | summary about the data structure of the problem management information in one embodiment of this invention, and the example of concrete data. 本発明の一実施の形態における開発機能情報のデータ構成の例について概要を示した図である。It is the figure which showed the outline | summary about the example of the data structure of the development function information in one embodiment of this invention. 本発明の一実施の形態における不具合情報のデータ構成の例について概要を示した図である。It is the figure which showed the outline | summary about the example of the data structure of the malfunction information in one embodiment of this invention. (a)、(b)は、本発明の一実施の形態におけるラベル情報のデータ構成および具体的なデータの例について概要を示した図である。(A), (b) is the figure which showed the outline | summary about the data structure of the label information in one embodiment of this invention, and the example of concrete data. 本発明の一実施の形態におけるブランチの自動生成処理の流れの例について概要を示したフローチャートである。It is the flowchart which showed the outline | summary about the example of the flow of the automatic generation process of the branch in one embodiment of this invention. 本発明の一実施の形態におけるコミットコメントの自動追加処理の流れの例について概要を示したフローチャートである。It is the flowchart which showed the outline | summary about the example of the flow of the automatic addition process of the commit comment in one embodiment of this invention. 本発明の一実施の形態におけるリポジトリ表示画面の例について概要を示した図である。It is the figure which showed the outline | summary about the example of the repository display screen in one embodiment of this invention. 本発明の一実施の形態におけるブランチの自動指定処理の流れの例について概要を示したフローチャートである。It is the flowchart which showed the outline | summary about the example of the flow of the automatic designation | designated process of the branch in one embodiment of this invention. 本発明の一実施の形態におけるPullリクエスト画面の例について概要を示した図である。It is the figure which showed the outline | summary about the example of the Pull request screen in one embodiment of this invention. 本発明の一実施の形態におけるPullリクエスト画面の例について概要を示した図である。It is the figure which showed the outline | summary about the example of the Pull request screen in one embodiment of this invention. ソーシャルコーディングシステムを利用した従来の開発支援システムの構成例について概要を示した図である。It is the figure which showed the outline | summary about the structural example of the conventional development assistance system using a social coding system. ソーシャルコーディングシステムを利用した従来の開発支援システムにおける開発時の作業フローの例について概要を示した図である。It is the figure which showed the outline | summary about the example of the work flow at the time of the development in the conventional development assistance system using a social coding system. 従来の開発支援システムにおける開発で取り扱われるデータの関連の例を表したクラス図である。It is a class diagram showing the example of the relationship of the data handled by the development in the conventional development support system. 従来の開発支援システムにおける課題、ブランチ、コミット、およびPullリクエストの間の具体的な対応関係について例を示した図である。It is the figure which showed the example about the specific correspondence between the subject in a conventional development support system, a branch, a commit, and a Pull request. 従来の開発支援システムにおけるリポジトリ管理システムとソーシャルコーディングシステムにおける処理イメージの例について概要を示した図である。It is the figure which showed the outline | summary about the example of the processing image in the repository management system and social coding system in the conventional development assistance system.
 以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。また、以下においては、本発明の特徴を分かり易くするために、従来の技術と比較して説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings. Note that components having the same function are denoted by the same reference symbols throughout the drawings for describing the embodiment, and the repetitive description thereof will be omitted. In the following, in order to make the features of the present invention easier to understand, the description will be made in comparison with the prior art.
 <概要>
 図14は、ソーシャルコーディングシステムを利用した従来の開発支援システムの構成例について概要を示した図である。開発支援システム1は、ソーシャルコーディングシステム100およびリポジトリ管理システム200の各情報処理システムと、複数のユーザの情報処理端末であるユーザ端末400とがネットワーク500を介して接続される構成を有している。さらに課題の管理を個別に行う課題管理システム300を有していてもよい。
<Overview>
FIG. 14 is a diagram showing an outline of a configuration example of a conventional development support system using a social coding system. The development support system 1 has a configuration in which each information processing system of the social coding system 100 and the repository management system 200 and a user terminal 400 that is an information processing terminal of a plurality of users are connected via a network 500. . Furthermore, you may have the task management system 300 which manages a task separately.
 リポジトリ管理システム200は、例えば、リポジトリデータベース(DB)201に保持されたリポジトリを管理するリポジトリ管理部210、リポジトリ上で作成されているブランチを管理するブランチ管理部220、およびリポジトリにおいて開発のために作成し分岐させたブランチを分岐元のブランチにマージ(統合)するマージ処理部230などを有する。これらの各部は、例えば、ソフトウェアプログラムによって実装される。 The repository management system 200 includes, for example, a repository management unit 210 that manages a repository held in a repository database (DB) 201, a branch management unit 220 that manages a branch created on the repository, and for development in the repository. A merge processing unit 230 that merges (integrates) the branch that has been created and branched is merged with the branch that is the branch source. Each of these units is implemented by, for example, a software program.
 一方、ソーシャルコーディングシステム100は、例えば、開発者等のユーザに対して認証等の処理を行うユーザ認証部110、課題DB101に保持された開発案件における課題(Issue、以下では単に「課題」と記載する場合がある)を管理する課題管理部120、およびリポジトリ管理システム200を介してリポジトリ上でのブランチに対する各種の処理を行うブランチ処理部130などを有する。これらの各部も、例えば、ソフトウェアプログラムによって実装される。ソーシャルコーディングシステム100としては、例えば、上述したGitHubやGitLabなどが知られている。なお、課題管理部120は、課題管理システム300の課題管理部310によって代替してもよいし、並列的に課題DB101を管理する構成であってもよい。 On the other hand, the social coding system 100 includes, for example, a user authentication unit 110 that performs processing such as authentication for a user such as a developer, and a problem (Issue in a development project held in the problem DB 101, hereinafter simply referred to as “issue”. And a branch processing unit 130 that performs various processes on the branch on the repository via the repository management system 200. Each of these units is also implemented by, for example, a software program. As the social coding system 100, for example, the above-described GitHub, GitLab, and the like are known. Note that the assignment management unit 120 may be replaced by the assignment management unit 310 of the assignment management system 300, or may be configured to manage the assignment DB 101 in parallel.
 各開発者等が使用するユーザ端末400は、それぞれ、ソーシャルコーディングシステム100のクライアントアプリケーションであるソーシャルコーディングクライアント410を有する。ソーシャルコーディングクライアント410は、各開発者が課題に係る開発を行うため、開発用に作成されたブランチを含むリポジトリの一部もしくは全部を、必要に応じてリポジトリDB201からローカルリポジトリDB401に取り込むことができ、リポジトリに係る処理を行うためのリポジトリ処理部411や、開発対象の課題の管理を行う課題処理部412などの各部を有する。なお、ソーシャルコーディングクライアント410は、全部もしくは一部が専用のクライアントアプリケーションプログラムとして実装されていてもよいし、ソーシャルコーディングシステム100と連携してWebブラウザ上で稼働するWebアプリケーションとして実装されていてもよい。 Each user terminal 400 used by each developer has a social coding client 410 that is a client application of the social coding system 100. The social coding client 410 allows each developer to perform development related to an issue, so that a part or all of a repository including a branch created for development can be imported from the repository DB 201 to the local repository DB 401 as necessary. Each unit includes a repository processing unit 411 for performing processing related to the repository, and an issue processing unit 412 for managing issues to be developed. The social coding client 410 may be entirely or partially implemented as a dedicated client application program, or may be implemented as a web application that runs on a web browser in cooperation with the social coding system 100. .
 図15は、ソーシャルコーディングシステムを利用した従来の開発支援システムにおける開発時の作業フローの例について概要を示した図である。まず、新規の機能開発もしくは不具合(バグ)対策についての検討が設計者や開発リーダー等により行われる(S1)。このとき、検討結果として作成された課題を新たに課題DB101に登録する。具体的には、当該課題を表象する情報として、例えば、機能開発の場合は変更票、不具合対策の場合は不具合票をシステム上発行する。 FIG. 15 is a diagram showing an outline of an example of a work flow at the time of development in a conventional development support system using a social coding system. First, a designer or a development leader or the like examines new function development or countermeasures for defects (bugs) (S1). At this time, the problem created as the examination result is newly registered in the problem DB 101. Specifically, as information representing the problem, for example, a change slip is issued on the system in the case of function development, and a failure slip is issued on the system in the case of failure countermeasures.
 次に、登録された課題(発行された変更票もしくは不具合票)に基づいて、対応を開始する(S2)。具体的には、リポジトリDB201上で、当該課題に係る開発を行うための管理用のブランチを作成する。なお、ここまでの処理は、ソーシャルコーディングシステム100およびリポジトリ管理システム200上で、設計者や開発リーダー、プロジェクトマネージャー等(以下ではこれらを総称して「リーダー」と記載する場合がある)により行われるのが通常である。 Next, response is started based on the registered issue (issued change slip or defect slip) (S2). More specifically, a management branch is created on the repository DB 201 for development related to the subject. The processing so far is performed on the social coding system 100 and the repository management system 200 by a designer, a development leader, a project manager, or the like (hereinafter, these may be collectively referred to as “leader”). It is normal.
 次に、開発の準備として、開発者が上記の管理用ブランチをローカルリポジトリDB401に取り込んで、開発者用のブランチを作成する(S3)。その後、開発者は、作成された開発者ブランチに対応する開発を行う(S4)。具体的には、ソースコードを作成・修正し、手動でのテストを行い、テストが完了したソースコードを開発者ブランチに対して登録(コミット)する。さらに、開発した部分について、管理用ブランチへの取り込み要求(Pullリクエスト)を行う(S5)。具体的には、リポジトリDB201からローカルリポジトリDB401に対して最新の管理用ブランチを取り込み、これを開発者ブランチに反映させた上で、リポジトリ管理システム200に対して管理用ブランチへの取り込み要求(Pullリクエスト)を行う。 Next, as preparation for development, the developer takes in the above management branch into the local repository DB 401 and creates a branch for the developer (S3). Thereafter, the developer performs development corresponding to the created developer branch (S4). Specifically, source code is created / modified, a manual test is performed, and the source code after the test is registered (committed) in the developer branch. Furthermore, a fetch request (Pull request) to the management branch is made for the developed part (S5). Specifically, the latest management branch is fetched from the repository DB 201 to the local repository DB 401, reflected in the developer branch, and then requested to the repository management system 200 for fetching to the management branch (Pull). Request).
 Pullリクエストがされると、リーダーは、ソーシャルコーディングシステム100上で開発者ブランチにおける開発内容をレビューし、必要に応じて自動テスト等を行い、問題がなければこれを管理用ブランチにマージすることで取り込む(S6)。その後、さらに課題としてのレビューを行い、必要に応じて自動テスト等を行い、問題がなければこれをメインブランチにマージすることで取り込むとともに本番環境等にリリースする(S7)。 When a Pull request is made, the reader reviews the development contents in the developer branch on the social coding system 100, performs an automatic test or the like as necessary, and if there is no problem, merges it into the management branch. Capture (S6). After that, further review as a task is performed, an automatic test or the like is performed as necessary, and if there is no problem, this is taken in by merging into the main branch and released to the production environment or the like (S7).
 ここで、例えば、ステップS2やS3においては、機能開発や不具合対応の案件毎に管理用ブランチを作成し、さらに複数の開発者での分散開発を可能とするよう、開発者毎に開発者ブランチを作成することになるが、従来の開発支援システムにおける開発では、これらのブランチは手動で作成する必要があり、煩雑で作業負荷が高い状況となっている。 Here, for example, in steps S2 and S3, a branch for management is created for each function development or defect handling case, and a developer branch is provided for each developer so as to enable distributed development by a plurality of developers. However, in the development in the conventional development support system, these branches need to be created manually, which is complicated and has a high workload.
 また、ステップS4でソースコードの開発が行われてテストが完了すると、開発用ブランチに対してコミットが行われるが、各コミットは、ステップS1で作成された課題に対応することから、コミット毎に対応する課題との関連付けを行うことが必要となるが、これも現状では手動で行う必要があり、煩雑で作業負荷が高い状況となっている。 When the source code is developed in step S4 and the test is completed, the development branch is committed. Since each commit corresponds to the issue created in step S1, each commit is performed. Although it is necessary to associate with a corresponding problem, this also needs to be done manually at present, and is complicated and has a high workload.
 さらに、ステップS5で、ステップS4で行ったコミットに係る開発部分を対応する管理用ブランチにマージするために、Pullリクエストを作成するが、当該処理はブランチ間でのマージが前提となる。従って、Pullリクエストの際にマージ元となる開発者ブランチとマージ先となる管理用ブランチを指定する必要があるが、これも現状では手動で行う必要がある。 Further, in step S5, a Pull request is created in order to merge the development part related to the commit performed in step S4 into the corresponding management branch. However, the processing is premised on merging between the branches. Therefore, it is necessary to specify a developer branch as a merge source and a management branch as a merge destination at the time of a Pull request, but this also needs to be done manually at present.
 図16~図18は、上述したような従来の開発支援システムにおける開発での状況をより詳細に説明した図である。図16は、従来の開発支援システムにおける開発で取り扱われるデータの関連の例を表したクラス図である。図示するように、ソーシャルコーディングシステム100もしくは課題管理システム300では、課題が管理される。さらに、ソーシャルコーディングシステム100では、Pullリクエストが管理される。また、リポジトリ管理システム200(ユーザ端末400上のローカルリポジトリDB401を含む)では、ブランチとコミットが管理される。 FIG. 16 to FIG. 18 are diagrams for explaining the situation in development in the conventional development support system as described above in more detail. FIG. 16 is a class diagram showing an example of the relationship of data handled in development in a conventional development support system. As shown in the figure, the social coding system 100 or the problem management system 300 manages problems. Further, the social coding system 100 manages Pull requests. Further, the repository management system 200 (including the local repository DB 401 on the user terminal 400) manages branches and commits.
 課題は、上述したように、機能追加項目を管理する変更票と、不具合修正を管理する不具合票とに分けられる。開発作業を開始する際には、リポジトリ管理システム200のリポジトリ上の管理用ブランチとして、課題に対応する機能開発用ブランチもしくは不具合修正用ブランチを作成する。しかしながら、上述したように、これらのブランチは現状では手動で作成する必要がある。従って、変更票や不具合票と、機能開発用ブランチや不具合修正用ブランチとの間の関連付け(リンク作成)についても手動で行う必要がある(図中では点線で関連を表している)。なお、特許文献1に記載された技術では、変更票(特許文献1における懸案に相当)に対応する機能開発用ブランチについては自動的に作成することができるが、不具合票に対応する不具合修正用ブランチについては言及されていない。 As described above, the problem is divided into a change slip that manages function addition items and a failure slip that manages defect correction. When starting the development work, a function development branch or defect correction branch corresponding to the problem is created as a management branch on the repository of the repository management system 200. However, as described above, these branches need to be created manually at present. Therefore, it is also necessary to manually perform association (link creation) between the change slip or defect slip and the function development branch or failure correction branch (indicated by a dotted line in the drawing). In the technique described in Patent Document 1, a function development branch corresponding to a change slip (corresponding to a pending matter in Patent Document 1) can be automatically created. There is no mention of branches.
 開発作業時には、上述したように、複数の開発者がそれぞれ独立して並行的に分散開発ができるよう、開発者毎に開発者ブランチ(機能開発用開発者ブランチもしくは不具合修正用開発者ブランチ)を作成することになるが、従来の開発支援システムにおける開発では、これらの開発者ブランチも手動で作成する必要がある。なお、特許文献1に記載された技術では、開発者ブランチに相当するブランチの作成については言及されていない。 At the time of development work, as described above, a developer branch (development branch for function development or developer branch for defect correction) is provided for each developer so that multiple developers can independently perform distributed development in parallel. However, in the development in the conventional development support system, it is necessary to manually create these developer branches. Note that the technique described in Patent Document 1 does not mention creation of a branch corresponding to a developer branch.
 開発者ブランチの作成後、ソースコードの作成・修正、テスト等の開発が行われ、完了したものを1つのコミットとして登録するが、上述したように、各コミットは課題に対応する。従って、コミット毎に対応する課題(実際は対応する変更票もしくは不具合票)との関連付けを行うことが必要となるが、これも現状では手動で行う必要がある(図中では点線で関連を示している)。なお、図示するように、コミットは1つの課題に対して複数に分割して登録することができる。 ∙ After creating the developer branch, development such as source code creation / modification and testing is performed, and the completed one is registered as one commit. As described above, each commit corresponds to an issue. Therefore, it is necessary to make an association with the corresponding issue (actually the corresponding change slip or defect slip) for each commit, but this must also be done manually at present (indicated by dotted lines in the figure) ) As shown in the figure, a commit can be divided into a plurality of items for registration.
 そして、コミットに対応する開発用ブランチを、対応する管理用ブランチ(機能開発用ブランチもしくは不具合修正用ブランチ)にマージ(統合)するために、Pullリクエストが作成される。実際のブランチのマージ処理は、Pullリクエストに対するレビュー、承認等を経た後に行われる。上述したように、Pullリクエストでは、マージ元となる開発者ブランチとマージ先となる管理用ブランチを指定する必要があるが、これも現状では手動で行う必要がある。また、Pullリクエストは、必ずいずれかの課題(実際は対応する変更票もしくは不具合票)に対応しているが、これらを関連付けてシステム上で管理するには、例えば、Pullリクエストのコメントに対応する課題の識別情報を手動で記載するなどの作業が必要となる(図中では点線でこれらの関連を示している)。 Then, a Pull request is created in order to merge (integrate) the development branch corresponding to the commit into the corresponding management branch (function development branch or defect correction branch). The actual branch merge process is performed after review, approval, etc. for the Pull request. As described above, in the Pull request, it is necessary to specify the developer branch that is the merge source and the management branch that is the merge destination. In addition, a Pull request always corresponds to one of the issues (actually corresponding change slip or defect slip), but in order to associate them with the system and manage them, for example, the issue corresponding to the comment of the Pull request It is necessary to manually describe the identification information of these (in the figure, the relationship is indicated by a dotted line).
 なお、Pullリクエストには複数のコミットが関連付けられるが、マージ元の開発用ブランチとマージ先の管理用ブランチが指定されると、マージ先の管理用ブランチにはない、マージ元の開発用ブランチ内のコミット、すなわち、マージ先の管理用ブランチからマージ元の開発用ブランチに分岐して登録された全てのコミットとして特定される。通常、リポジトリ管理システム200においては、ブランチは必ず1つの親ブランチから派生して作成されている、すなわち、どのブランチも必ず親ブランチのある部分から分岐して作成されているので、上記のようにPullリクエストに対応するコミットを特定することができる。 Plural requests are associated with a plurality of commits, but if a merge-source development branch and a merge-destination management branch are specified, the merge request is not in the merge-destination management branch. Commits, that is, all commits that are registered by branching from the merge destination management branch to the merge source development branch. Normally, in the repository management system 200, a branch is always created by being derived from one parent branch, that is, every branch is always created by branching from a part of the parent branch. A commit corresponding to the Pull request can be identified.
 図17は、上述したような、課題、管理用ブランチ、開発用ブランチ、コミット、およびPullリクエストの間の具体的な対応関係について例を示した図である。すなわち、機能開発案件においては、変更票と機能開発用ブランチとが1対1で関連付けられ、機能開発用ブランチには開発者毎の機能開発用開発者ブランチが1対多で関連付けられる。また、機能開発用開発者ブランチには、複数のコミット(機能開発修正コミット)が1対多で関連付けられる。そして、複数の機能開発修正コミットは、1つのPullリクエスト(機能開発修正Pullリクエスト)に多対1で関連付けられ、この機能開発修正Pullリクエストは変更票に1対1で関連付けられる。 FIG. 17 is a diagram illustrating an example of a specific correspondence between the issues, the management branch, the development branch, the commit, and the Pull request as described above. That is, in the function development case, the change slip and the function development branch are associated one-to-one, and the function development branch is associated with the function development developer branch for each developer on a one-to-many basis. A function development developer branch is associated with a plurality of commits (function development modification commits) in a one-to-many manner. A plurality of function development modification commits are associated with one Pull request (function development modification Pull request) in a many-to-one relationship, and this function development modification Pull request is associated with the change slip on a one-to-one basis.
 機能開発用ブランチと機能開発用開発者ブランチとの対応は、機能開発修正Pullリクエストと1対1で関連付けられる。すなわち、各開発者の機能開発用開発者ブランチに係る開発部分は、1つの機能開発修正Pullリクエストによって機能開発用ブランチにマージされることを示している。なお、上記のような対応関係は、不具合対策案件においても同様であるため、再度の説明は省略する。 The correspondence between the function development branch and the function development developer branch is associated with the function development modification Pull request on a one-to-one basis. That is, the development part related to the developer branch for function development of each developer is merged into the branch for function development by one function development modification Pull request. Note that the correspondence as described above is the same in the defect countermeasure case, and thus the description thereof will be omitted.
 図18は、リポジトリ管理システム200とソーシャルコーディングシステム100における処理イメージの例について概要を示した図である。リポジトリ管理システム200のローカルリポジトリDB201には、ブランチの階層構造が保持されている状態を示している。このリポジトリの内容の全部もしくは一部について、開発者毎のユーザ端末400のローカルリポジトリDB401ではクローン(コピー)が作成され、これに基づいて開発が行われる。完了した開発内容が登録されたローカルリポジトリDB401上のリポジトリは、リポジトリ管理システム200のリポジトリDB201に対してプッシュ(反映)される。 FIG. 18 is a diagram showing an outline of examples of processing images in the repository management system 200 and the social coding system 100. The local repository DB 201 of the repository management system 200 shows a state in which a branch hierarchical structure is held. A clone (copy) is created in the local repository DB 401 of the user terminal 400 for each developer for all or part of the contents of the repository, and development is performed based on the clone. The repository on the local repository DB 401 in which the completed development content is registered is pushed (reflected) to the repository DB 201 of the repository management system 200.
 ソーシャルコーディングシステム100(もしくは課題管理システム300)上では、課題(図18の例では“変更票(C0001)”や“不具合票(B0011)”など)が作成され、これらの課題と、課題に対応してリポジトリDB201上に作成されたブランチとの関連付けが行われる。また、ソーシャルコーディングシステム上では、リポジトリDB201に対して開発内容を反映させるためのPullリクエスト(図18の例では“Pullリクエスト(#1)”など)が作成され、Pullリクエストと課題との間の関連付けが行われる。これらの関連付けは、上述したように、現状では手動で行う必要があり、煩雑で作業負荷が高い。 On the social coding system 100 (or the problem management system 300), problems (such as “change slip (C0001)” and “failure slip (B0011)” in the example of FIG. 18) are created, and these issues and corresponding issues Thus, the association with the branch created on the repository DB 201 is performed. In addition, on the social coding system, a Pull request (such as “Pull request (# 1)” in the example of FIG. 18) for reflecting the development contents on the repository DB 201 is created, and between the Pull request and the issue. Association is performed. As described above, these associations must be performed manually at present, and are complicated and have a high workload.
 上述したように、特許文献1に記載された技術では、課題(特許文献1における懸案に相当)管理システム上で新しい課題が登録されると自動的に対応するブランチを作成し、作成されたブランチと課題との関連付けを管理することができるため、上記のような作業負荷をある程度低減させることができる。しかしながら、リポジトリ管理システム200としてはSubversion(登録商標)などの公知のバージョン管理ツールを前提としており、ブランチの階層構造における分岐元は特定のブランチ(例えば“trunk”)に限定され、課題別にブランチを分けることができないという制約がある。 As described above, in the technique described in Patent Document 1, when a new problem is registered on a problem (corresponding to the issue in Patent Document 1) management system, a corresponding branch is automatically created, and the created branch Since the association between a task and a task can be managed, the workload as described above can be reduced to some extent. However, the repository management system 200 is premised on a known version management tool such as Subversion (registered trademark), the branch source in the branch hierarchy is limited to a specific branch (for example, “trunk”), and a branch is assigned to each problem. There is a restriction that it cannot be divided.
 また、課題数が多い場合にブランチ数が膨大となり、管理が困難になるとともに、ユーザインタフェース上において多数のブランチからのブランチの選択・切替が困難になったり、グラフ表示の可視性が悪くなるなどの問題を有する。また、ブランチの作成時の状態でブランチを分岐するため、分岐のタイミングによっては他の修正に係る取り込み作業が無駄に発生する場合がある。 In addition, when the number of issues is large, the number of branches becomes enormous, making management difficult, making it difficult to select and switch branches from a large number of branches on the user interface, and the visibility of the graph display to deteriorate Have problems. Further, since the branch is branched in the state at the time of branch creation, depending on the timing of branching, there may be a waste of import work related to other corrections.
 そこで、本実施の一実施の形態である開発支援システムは、ブランチ作成が必要なタイミングでブランチを自動的に作成することでブランチの数をできるだけ抑え、可能な限り最新の状態から開発作業に着手できるようにする。また、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うことで、作業負荷を低減させ、ソフトウェア開発作業における作業効率を向上させる。 Therefore, the development support system according to one embodiment of the present invention starts the development work from the latest state as much as possible by automatically creating branches at the timing when branch creation is necessary, thereby minimizing the number of branches. It can be so. Also, by automatically associating assignments, branches, commits, and pull requests, the workload is reduced and the work efficiency in software development work is improved.
 具体的には、例えば、課題が作成され、もしくは状態が変化したときに、自動的に当該課題に対応したブランチを作成する。その際、作成された課題の情報に基づいて、分岐元となるブランチを自動的に指定する。これにより、課題の作成等のタイミングでブランチを自動的に作成するとともに、課題とブランチとの関連付けも自動的に行う(例えば、ブランチの命名規則などによる)。 Specifically, for example, when a task is created or the state changes, a branch corresponding to the task is automatically created. At that time, a branch source branch is automatically specified based on the created task information. As a result, the branch is automatically created at the timing of the creation of the assignment, and the association between the assignment and the branch is automatically performed (for example, according to a branch naming rule).
 また、ブランチの情報(例えば、命名規則に従ったブランチの名称)に基づいて、当該ブランチに対応する変更票もしくは不具合票の識別情報を判断し、その情報をコミットコメントに付与する。これにより、コミットと課題(変更票もしくは不具合票)との関連付けを自動的に行う。 Also, based on the branch information (for example, the name of the branch in accordance with the naming rule), the identification information of the change slip or defect slip corresponding to the branch is determined, and the information is given to the commit comment. As a result, the association between the commit and the issue (change vote or defect vote) is automatically performed.
 また、ブランチの情報(例えば、命名規則に従ったブランチの名称)に基づいて、マージ先(分岐元)となるブランチを判断し、その情報に基づいて、Pullリクエストの作成時に必要となるマージ先およびマージ元のブランチ名を自動的に指定・補完する。これにより、Pullリクエストとブランチおよび課題との関連付けを自動的に行う。 Also, based on the branch information (for example, the name of the branch according to the naming rule), the branch that becomes the merge destination (branch source) is determined, and based on the information, the merge destination that is required when creating the Pull request And automatically specify and complete the merge source branch name. Thereby, the Pull request is automatically associated with the branch and the assignment.
 <システム構成>
 図1は、本発明の一実施の形態である開発支援システムの構成例について概要を示した図である。本実施の形態の開発支援システム1は、図14に示した従来の開発支援システム1と同様に、ソーシャルコーディングシステム100およびリポジトリ管理システム200の各情報処理システムと、複数のユーザの情報処理端末であるユーザ端末400がネットワーク500を介して接続される構成を有している。さらに課題の管理を個別に行う管理システム300を有していてもよい。ソーシャルコーディングシステム100(もしくは課題管理システム300)は、課題DB101を有しており、リポジトリ管理システム200は、リポジトリDB201を有している。
<System configuration>
FIG. 1 is a diagram showing an outline of a configuration example of a development support system according to an embodiment of the present invention. As in the conventional development support system 1 shown in FIG. 14, the development support system 1 according to the present embodiment includes information processing systems such as the social coding system 100 and the repository management system 200, and information processing terminals of a plurality of users. A user terminal 400 is connected via a network 500. Furthermore, you may have the management system 300 which manages the problem separately. The social coding system 100 (or issue management system 300) has an issue DB 101, and the repository management system 200 has a repository DB 201.
 ソーシャルコーディングシステム100およびリポジトリ管理システム200は、アプリケーションサーバであり、課題DB101およびリポジトリDB201は、DBサーバとして構成される。これらのアプリケーションサーバやDBサーバは、いずれも、サーバ機器によって構成されていてもよいし、サーバ機器やクラウドコンピューティングサービス上に構成された仮想サーバの1インスタンスによって構成されていてもよい。また、これらの混在により構成されていてもよい。 The social coding system 100 and the repository management system 200 are application servers, and the assignment DB 101 and the repository DB 201 are configured as DB servers. Each of these application servers and DB servers may be configured by server devices, or may be configured by one instance of a virtual server configured on a server device or a cloud computing service. Moreover, you may be comprised by mixing these.
 また、図中では、これらの各サーバはそれぞれ独立した構成となっているが、全部もしくは一部を1つのサーバ機器等に集約してもよい。また、ソーシャルコーディングシステム100と課題DB101との間や、リポジトリ管理システム200とリポジトリDB201との間の接続は、専用線に限らず、ネットワーク500を介して接続されていてもよい。ネットワーク500は、インターネット、イントラネットのいずれであってもよく、また、物理レイヤーも、有線LAN(Local Area Network)、無線LAN、パケット回線など、特に限定されない。 In the figure, each of these servers has an independent configuration, but all or a part of them may be integrated into one server device or the like. Further, the connection between the social coding system 100 and the assignment DB 101 or between the repository management system 200 and the repository DB 201 is not limited to a dedicated line, and may be connected via the network 500. The network 500 may be either the Internet or an intranet, and the physical layer is not particularly limited, such as a wired LAN (Local Area Network), a wireless LAN, or a packet line.
 リポジトリ管理システム200は、例えば、図14に示した従来の開発支援システム1と同様に、リポジトリDB201に保持されたリポジトリを管理するリポジトリ管理部210、リポジトリ上で作成されているブランチを管理するブランチ管理部220、およびリポジトリにおいて開発のために作成し分岐させたブランチを分岐元のブランチにマージするマージ処理部230などを有する。これらの各部は、例えば、ソフトウェアプログラムによって実装される。 The repository management system 200 is similar to the conventional development support system 1 shown in FIG. 14, for example, a repository management unit 210 that manages a repository held in the repository DB 201, a branch that manages a branch created on the repository The management unit 220, and a merge processing unit 230 that merges a branch created and branched for development in the repository into a branch source branch. Each of these units is implemented by, for example, a software program.
 本実施の形態では、リポジトリ管理システム200として、例えば、オープンソースの分散リポジトリ管理ツールであるGitを想定しているが、Mercurial(hg)などの他の分散リポジトリ管理ツールを利用することも可能である。なお、例えば、Subversion(登録商標)等の集中リポジトリ管理ツールであっても、ユーザ端末400においてローカルリポジトリDB401が不要となるなど構成は変わるものの、原理的には本実施の形態の開発支援システム1に適用することは可能である。ただし、実際のソーシャルコーディングでは複数の開発者により頻繁に開発や修正が行われることからリポジトリの排他処理により他の開発作業が止まってしまう場合が多い。従って、分散リポジトリ管理ツールを利用するのが望ましい。 In the present embodiment, for example, Git, which is an open source distributed repository management tool, is assumed as the repository management system 200, but other distributed repository management tools such as Mercurial (hg) can also be used. is there. Note that, for example, even if a central repository management tool such as Subversion (registered trademark) is used, although the configuration changes such that the local repository DB 401 is not required in the user terminal 400, the development support system 1 of the present embodiment is in principle. It is possible to apply to. However, in actual social coding, since development and correction are frequently performed by multiple developers, other development work is often stopped by exclusive processing of the repository. Therefore, it is desirable to use a distributed repository management tool.
 ソーシャルコーディングシステム100は、例えば、図14に示した従来の開発支援システム1と同様に、開発者等のユーザに対して認証等の処理を行うユーザ認証部110、課題DB101に保持された開発案件における課題を管理する課題管理部120、およびリポジトリ管理システム200を介してリポジトリ上でのブランチに対する各種の処理を行うブランチ処理部130を有する。これらの各部は、例えば、ソフトウェアプログラムによって実装される。課題管理部120は、課題管理システム300の課題管理部310によって代替してもよいし、並列的に課題DB101を管理する構成であってもよい。 The social coding system 100 is, for example, similar to the conventional development support system 1 shown in FIG. 14, a user authentication unit 110 that performs processing such as authentication for a user such as a developer, and development projects held in the problem DB 101. And a branch processing unit 130 that performs various processes for the branch on the repository via the repository management system 200. Each of these units is implemented by, for example, a software program. The assignment management unit 120 may be replaced by the assignment management unit 310 of the assignment management system 300, or may be configured to manage the assignment DB 101 in parallel.
 本実施の形態のソーシャルコーディングシステム100は、さらに、各ユーザ端末400からのPullリクエストを受け付けてこれに関する処理を行うPullリクエスト処理部140を有する。本実施の形態における課題管理部120やブランチ処理部130、Pullリクエスト処理部140は、上述したような、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うための機能を有している。これらの機能の詳細については後述する。 The social coding system 100 according to the present embodiment further includes a pull request processing unit 140 that receives pull requests from each user terminal 400 and performs processing related thereto. The issue management unit 120, the branch processing unit 130, and the pull request processing unit 140 according to the present embodiment have a function for automatically associating issues, branches, commits, and pull requests as described above. ing. Details of these functions will be described later.
 ユーザ端末400は、開発者がそれぞれ使用するPC(Personal Computer)等の情報処理端末であるが、スマートフォンやタブレット端末などの携帯型端末であってもよい。ユーザ端末400は、図14に示した従来の開発支援システム1と同様に、ソーシャルコーディングシステム100のクライアントアプリケーションであるソーシャルコーディングクライアント410およびローカルリポジトリDB401を有する。ソーシャルコーディングクライアント410は、リポジトリに係る処理を行うためのリポジトリ処理部411や、開発対象の課題の管理を行う課題処理部412などの各部を有する。 The user terminal 400 is an information processing terminal such as a PC (Personal Computer) used by a developer, but may be a portable terminal such as a smartphone or a tablet terminal. Similarly to the conventional development support system 1 shown in FIG. 14, the user terminal 400 includes a social coding client 410 that is a client application of the social coding system 100 and a local repository DB 401. The social coding client 410 includes various units such as a repository processing unit 411 for performing processing related to a repository and an issue processing unit 412 for managing issues to be developed.
 本実施の形態のソーシャルコーディングクライアント410は、さらに、開発されたソースコード等を開発用ブランチに対してコミット(登録)するための処理を行うコミット処理部413、およびリポジトリ管理システム200上の管理用ブランチへの取り込みを要求するPullリクエストの作成に係る処理を行うPullリクエスト作成部414などの各部を有する。本実施の形態におけるソーシャルコーディングクライアント410の各部は、ソーシャルコーディングシステム100と連携して、上述したような、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うための機能を有している。 The social coding client 410 according to the present embodiment further includes a commit processing unit 413 that performs processing for committing (registering) the developed source code and the like to the development branch, and for management on the repository management system 200. Each unit includes a pull request creation unit 414 that performs processing related to creation of a pull request for requesting incorporation into a branch. Each unit of the social coding client 410 according to the present embodiment has a function for automatically associating assignments, branches, commits, and pull requests as described above in cooperation with the social coding system 100. ing.
 <前提となるブランチ運用>
 図2は、本実施の形態におけるリポジトリ上のブランチの分岐による構成例について概要を示した図である。また、図3は、図2に示したブランチの種類および命名規則をまとめた表である。図2では、横方向に時系列(左から右へ時刻tが経過)、縦方向にブランチの種別を表している。黒丸印はコミット、すなわち確定したソースコードの修正差分を表している。
<Prerequisite branch operation>
FIG. 2 is a diagram showing an outline of a configuration example by branching on the repository in the present embodiment. FIG. 3 is a table summarizing the branch types and naming conventions shown in FIG. In FIG. 2, the time series is shown in the horizontal direction (time t has passed from left to right), and the type of branch is shown in the vertical direction. A black circle represents a commit, that is, a fixed source code modification difference.
 図2に示すように、本実施の形態では、最新の開発ブランチを“trunk”としている。これは、最新バージョンの全ての機能が追加されているブランチ(「最新開発ブランチ」と呼ぶ)であり、新規の機能開発(エンハンス開発)におけるメインブランチとなる。図2の例において、機能開発(エンハンス開発)では、“trunk”ブランチから上方向に分岐して“feature/C001/DEV”というブランチが作成されている。これは、新規の機能“C001”をチームで開発するための管理用のブランチ(総称して「機能開発用ブランチ」と呼ぶ)であり、チーム全体の開発成果物を格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別と機能名(図2の例では“C001”)を把握することができる。 As shown in FIG. 2, in this embodiment, the latest development branch is “trunk”. This is a branch to which all functions of the latest version are added (referred to as “latest development branch”), and becomes a main branch in new function development (enhancement development). In the example of FIG. 2, in function development (enhancement development), a branch “feature / C001 / DEV” is created by branching upward from the “trunk” branch. This is a branch for management for developing a new function “C001” by a team (generally called “branch for function development”), and is a branch for storing development products of the entire team. By assigning a branch name according to the naming rule shown in FIG. 3, the type of branch and the function name (“C001” in the example of FIG. 2) can be grasped from the branch name.
 図2の例では、“feature/C001/DEV”ブランチから、さらに分岐して“feature/C001/user2”というブランチが作成されている。これは、機能“C001”を開発する開発者“user2”専用のブランチ(総称して「機能開発用開発者ブランチ」と呼ぶ)であり、“user2”個人の作業成果物を格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別と機能名(図2の例では“C001”)および開発者(図2の例では“user2”)を把握することができる。 In the example of FIG. 2, a branch “feature / C001 / user2” is created by further branching from the “feature / C001 / DEV” branch. This is a branch dedicated to the developer “user2” who develops the function “C001” (collectively referred to as “developer branch for function development”), and is a branch for storing work products of “user2” individuals. . By assigning a branch name according to the naming convention shown in FIG. 3, the branch type and function name (“C001” in the example of FIG. 2) and developer (“user2” in the example of FIG. 2) are changed from the branch name. I can grasp it.
 一方、図2の例では、“trunk”ブランチから下方向に分岐して“stable/v0001”および“stable/v0002”というブランチが作成されている。これらは、例えば、パッケージ製品など、既に出荷してしまい、それに対する不具合対応等のメンテナンスが必要となるものについて、基準となるバージョンを格納するブランチ(総称して「安定ブランチ」と呼ぶ)であり、不具合修正におけるメインブランチとなる。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別とバージョン(図2の例では、“v0001”や“v0002”)を把握することができる。 On the other hand, in the example of FIG. 2, branches “stable / v0001” and “stable / v0002” are created by branching downward from the “trunk” branch. These are branches (collectively referred to as “stable branches”) that store reference versions of items that have already been shipped, such as packaged products, and require maintenance such as dealing with defects. It becomes the main branch for defect correction. By assigning a branch name according to the naming rule shown in FIG. 3, the branch type and version (“v0001” and “v0002” in the example of FIG. 2) can be grasped from the branch name.
 図2の例では、“stable/v0001”ブランチから、さらに分岐して“fix/B011/v0001/DEV”というブランチが作成されている。これは、不具合“B011”に対してチームで対応するための管理用のブランチ(総称して「不具合修正用ブランチ」と呼ぶ)であり、不具合“B011”に対してチーム全体で作成された修正コードを格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別とバージョン(図2の例では“v0001”)および不具合名(図2の例では“B011”)を把握することができる。 In the example of FIG. 2, a branch “fix / B011 / v0001 / DEV” is created by further branching from the “stable / v0001” branch. This is a management branch (collectively referred to as “defect correction branch”) for dealing with the defect “B011” by the team, and a correction created for the defect “B011” by the entire team. A branch that stores code. By assigning a branch name according to the naming rule shown in FIG. 3, the type and version of the branch (“v0001” in the example of FIG. 2) and the defect name (“B011” in the example of FIG. 2) are grasped from the branch name. can do.
 図2の例では、“fix/B011/v0001/DEV”ブランチから、さらに分岐して“fix/B011/v0001/user1”というブランチが作成されている。これは、不具合“B011”への対応を行う開発者“user1”専用のブランチ(総称して「不具合修正用開発者ブランチ」と呼ぶ)であり、“user1”個人の作業成果物を格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別とバージョン(図2の例では“v0001”)、不具合名(図2の例では“B011”)および開発者(図2の例では“user1”)を把握することができる。 In the example of FIG. 2, a branch “fix / B011 / v0001 / user1” is created by further branching from the “fix / B011 / v0001 / DEV” branch. This is a branch dedicated to the developer “user1” that handles the defect “B011” (collectively referred to as “defect correction developer branch”), and is a branch that stores the work product of the individual “user1”. It is. By assigning branch names according to the naming rules shown in FIG. 3, the branch name to branch type and version (“v0001” in the example of FIG. 2), defect name (“B011” in the example of FIG. 2), and development The user ("user1" in the example of FIG. 2).
 なお、例えば、開発者用のブランチ(「機能開発用開発者ブランチ」や「不具合修正用開発者ブランチ」など)は、機能開発や不具合修正をチームではなく開発者個人で直接行う場合には作成しない運用とすることも可能である。 For example, a branch for developers (such as “Developer branch for function development” or “Developer branch for defect correction”) is created when function development and defect correction are performed directly by the developer, not by the team. It is also possible to set it not to operate.
 また、ブランチの命名規則(ネーミングルール)は、図3に示したものに限られないが、上述したように、「最新開発ブランチ」/「機能開発用ブランチ」/「機能開発用開発者ブランチ」、および「安定ブランチ」/「不具合修正用ブランチ」/「不具合修正用開発者ブランチ」のように、ブランチ間に親子関係が成立しており、その関係がブランチ名から把握できるようにネーミングされていることを前提とする。 Further, the branch naming rules (naming rules) are not limited to those shown in FIG. 3, but as described above, “latest development branch” / “function development branch” / “function development developer branch”. , And “stable branch” / “branch correction branch” / “defect correction developer branch”, a parent-child relationship is established between the branches, and the relationship is named so that the relationship can be grasped from the branch name. It is assumed that
 <データ構成>
 以下では、ソーシャルコーディングシステム100もしくは課題管理システム300が管理する課題DB101のデータ構成について説明する。図4は、課題DB101内のテーブルの1つである課題管理情報101aのデータ構成および具体的なデータの例について概要を示した図である。図4(a)ではデータ構成を示しており、図4(b)ではデータの具体的な例を示している。課題管理情報101aは、課題毎にその内容に関する情報を保持するテーブルであり、例えば、課題ID、タイトル、内容詳細、担当者、マイルストーン、状態、およびラベルIDリストなどの各項目を有する。
<Data structure>
Hereinafter, the data configuration of the assignment DB 101 managed by the social coding system 100 or the assignment management system 300 will be described. FIG. 4 is a diagram showing an overview of the data configuration of the task management information 101a, which is one of the tables in the task DB 101, and specific data examples. FIG. 4A shows a data structure, and FIG. 4B shows a specific example of data. The assignment management information 101a is a table that holds information about the contents of each assignment, and includes items such as an assignment ID, a title, details of contents, a person in charge, a milestone, a state, and a label ID list.
 課題IDの項目は、各課題を一意に識別することができるIDやシーケンス番号等の情報を保持する。タイトルの項目は、対象の課題に付されたタイトルや名称の情報を保持する。タイトルのフォーマットを、図4(b)に示すように、例えば“[課題識別子]_テキスト”として、各課題を一意に識別することができる課題識別子(例えば“C001”など)の情報を含めるようにしてもよい。課題識別子として上記の課題IDの項目の値を用いる場合には特にタイトルの項目に課題識別子を含めなくてもよい。 The item of issue ID holds information such as ID and sequence number that can uniquely identify each issue. The title item holds information on the title and name assigned to the target task. As shown in FIG. 4B, the title format is, for example, “[issue identifier] _text”, and includes information on an issue identifier (for example, “C001”) that can uniquely identify each issue. It may be. In the case where the value of the above-mentioned assignment ID item is used as the assignment identifier, the assignment identifier may not be included in the title item.
 内容詳細の項目は、対象の課題の内容についての詳細情報を保持する。例えば、対応する機能開発や不具合修正の内容を説明する情報などを含むことができる。担当者の項目は、対象の課題の担当者や管理者、責任者などを特定する情報を保持する。マイルストーンの項目は、対象の課題をどのバージョンのリリースで対応するかというマイルストーンの情報を保持する。状態の項目は、対象の課題の状態やステータスの情報を保持する。ラベルIDリストの項目は、対象の課題に対して設定された1つ以上のラベルを特定するラベルIDのリストの情報を保持する。各ラベルIDは、後述するラベル情報のテーブルに定義されている。 ・ Detailed content item stores detailed information about the content of the subject. For example, information describing the contents of corresponding function development or defect correction can be included. The item of the person in charge holds information for specifying the person in charge, the manager, the person in charge, etc. of the subject issue. The milestone item holds milestone information indicating which version of the target issue is to be dealt with. The status item holds information on the status and status of the target task. The item of the label ID list holds information of a list of label IDs that specify one or more labels set for the target task. Each label ID is defined in a table of label information described later.
 なお、課題管理情報101aは、例えば、課題が機能開発である場合、もしくは不具合修正である場合に、それぞれに特化してその内容に関する情報を保持することができるよう、機能開発と不具合修正のそれぞれの課題毎に個別にテーブルを有していてもよい。図5は、課題が機能開発である場合に特化して、開発対象の機能の内容に関する情報を保持する開発機能情報101bのデータ構成の例について概要を示した図である。また、図6は、課題が不具合修正である場合に特化して、修正対象の不具合の内容に関する情報を保持する不具合情報101cのデータ構成の例について概要を示した図である。開発機能情報101bの開発機能ID、および不具合情報101cの不具合IDの項目は、それぞれ、課題管理情報101aの課題IDに対応する項目である。また、不具合情報101cでは、対象の不具合が発生したバージョンの情報を保持する発生バージョンの項目を有している。 Note that the task management information 101a includes, for example, each of function development and defect correction so that, when the task is function development or defect correction, information relating to the contents can be specialized and retained. You may have a table for every subject. FIG. 5 is a diagram showing an outline of an example of the data configuration of the development function information 101b that holds information related to the contents of the function to be developed in a case where the problem is function development. FIG. 6 is a diagram showing an outline of an example of a data configuration of defect information 101c that holds information related to the content of the defect to be corrected, specialized when the problem is defect correction. The items of the development function ID of the development function information 101b and the defect ID of the defect information 101c are items corresponding to the problem ID of the problem management information 101a, respectively. In addition, the defect information 101c includes an item of an occurrence version that holds information on a version in which the target defect has occurred.
 図7は、課題DB101内のテーブルの1つであるラベル情報101dのデータ構成および具体的なデータの例について概要を示した図である。ラベル情報101dは、課題に設定される各種文字列等の情報をラベル化、コード化したものの定義内容を保持するマスタテーブルであり、例えば、ラベルID、およびラベル名などの各項目を有する。ラベルIDの項目は、各ラベルを一意に識別することができるIDやシーケンス番号等の情報を保持する。ラベル名の項目は、ラベルIDに対応するラベルの文字列等の情報を保持する。 FIG. 7 is a diagram showing an overview of the data configuration of the label information 101d, which is one of the tables in the assignment DB 101, and specific data examples. The label information 101d is a master table that holds definition contents of information obtained by labeling and encoding information such as various character strings set for the task, and includes items such as a label ID and a label name. The label ID item holds information such as an ID and a sequence number that can uniquely identify each label. The label name item holds information such as a character string of a label corresponding to the label ID.
 なお、上述の図4~図7で示した各テーブルのデータ構成(項目)はあくまで一例であり、同様のデータを保持・管理することが可能な構成であれば、他のテーブル構成やデータ構成であってもよい。 Note that the data configuration (items) of each table shown in FIGS. 4 to 7 is merely an example, and other table configurations and data configurations can be used as long as similar data can be held and managed. It may be.
 <1.ブランチの自動生成>
 本実施の形態では、上述したように、例えば、図15のステップS1において課題(変更票もしくは不具合票)が作成され、もしくは課題の状態が変化したときに、図15のステップS2やS3において課題の情報に基づいて自動的に当該課題に対応したブランチを生成することができる。以下では、このブランチの自動生成の処理について説明する。
<1. Automatic branch generation>
In the present embodiment, as described above, for example, when a task (change slip or defect slip) is created in step S1 of FIG. 15 or when the state of the task changes, the task in steps S2 and S3 of FIG. Based on the information, a branch corresponding to the subject can be automatically generated. The automatic branch generation process will be described below.
 図15のステップS2における管理用のブランチ(「機能開発用ブランチ」や「不具合修正用ブランチ」)を自動生成する場合、例えば、図1の例に示したユーザ端末400の課題処理部412において、ユーザからの指示・操作により課題(変更票もしくは不具合票)が新規に作成され、もしくは修正されると、これに連携して、ソーシャルコーディングシステム100の課題管理部120が当該課題を課題DB101に登録もしくは修正する。そして、課題DB101への登録・修正をトリガに、ブランチ処理部130が呼び出され、ブランチ処理部130が当該課題に対応するブランチを生成する。 When the management branch (“functional development branch” or “defect correction branch”) in step S2 of FIG. 15 is automatically generated, for example, in the problem processing unit 412 of the user terminal 400 shown in the example of FIG. When a task (change slip or defect slip) is newly created or modified by an instruction / operation from the user, the task management unit 120 of the social coding system 100 registers the task in the task DB 101 in cooperation with the task. Or correct it. Then, the branch processing unit 130 is called with the registration / correction in the problem DB 101 as a trigger, and the branch processing unit 130 generates a branch corresponding to the problem.
 図8は、ブランチ処理部130におけるブランチの自動生成処理の流れの例について概要を示したフローチャートである。まず、課題の情報から、当該課題を一意に特定することができる課題識別子を抽出する(S01)。課題識別子の例としては、機能開発における開発項目や、不具合修正における指摘不具合に対応して割り当てられたIDがある。例えば、機能開発における開発項目毎に発行された変更票のID(例えば“C001”など)や、不具合修正における指摘不具合毎に発行された不具合票のID(例えば“B011”など)を用いることができる。本実施の形態では、例えば、変更票の場合はIDの先頭文字を“C”(Change)とし、不具合票の場合はIDの先頭文字を“B”(Bug)とすることで、課題識別子から変更票か不具合票かを判定可能としている。なお、課題を一意に特定することができる文字列であれば他の項目を課題識別子として用いてもよい。 FIG. 8 is a flowchart showing an outline of an example of a flow of automatic branch generation processing in the branch processing unit 130. First, a task identifier that can uniquely identify the task is extracted from the task information (S01). Examples of the problem identifier include a development item in function development and an ID assigned corresponding to the indicated defect in defect correction. For example, the ID of a change slip (for example, “C001”, etc.) issued for each development item in function development, or the ID of a failure slip (for example, “B011”, etc.) issued for each indicated failure in defect correction is used. it can. In the present embodiment, for example, in the case of a change slip, the first character of the ID is “C” (Change), and in the case of a failure slip, the first character of the ID is “B” (Bug). It is possible to determine whether it is a change slip or a failure slip. Other items may be used as the assignment identifier as long as the assignment can uniquely identify the assignment.
 課題識別子の情報は、例えば、ソーシャルコーディングシステム100のブランチ処理部130や課題管理部120が課題DB101にアクセスして、対象の課題の課題IDや、タイトルの項目から課題識別子に相当する部分を抽出することができる。本実施の形態では、上述したように、課題DB101の課題管理情報101aにおいて、課題のタイトルのフォーマットを、例えば“[課題識別子]_テキスト”としており、タイトルの文字列から課題識別子の情報を抽出することが可能である。また、不具合修正に係る課題をバージョン毎に管理する場合は、後述する処理によりバージョン情報を取得して、これを課題識別子の情報に付加するようにしてもよい。 For example, the branch identifier 130 or the task manager 120 of the social coding system 100 accesses the task DB 101 to extract the portion corresponding to the task identifier from the task ID of the target task or the title item. can do. In the present embodiment, as described above, in the assignment management information 101a of the assignment DB 101, the format of the assignment title is, for example, “[assignment identifier] _text”, and information on the assignment identifier is extracted from the character string of the title. Is possible. Also, when managing issues related to defect correction for each version, version information may be acquired by processing to be described later and added to the information of the issue identifier.
 本実施の形態では、ソーシャルコーディングシステム100が課題DB101を有して課題を管理する構成を前提に説明したが、ソーシャルコーディングシステム100とは独立した課題管理システム300により課題を管理する構成の場合には、課題管理システム300が管理する課題情報を参照して課題識別子を抽出するようにしてもよい。 In the present embodiment, the social coding system 100 has been described on the assumption that the problem DB 101 has the problem management and the problem is managed by the problem management system 300 independent of the social coding system 100. May refer to the task information managed by the task management system 300 and extract the task identifier.
 次に、課題が不具合対応であるか否かを判定し(S02)、不具合対応である場合には、不具合が発生したバージョンの情報を取得する(S03)。課題が不具合対応ではない機能開発の場合には、ステップS03を行わずにステップS04に進む。ステップS03での処理としては、例えば、ブランチ処理部130や課題管理部120が課題DB101にアクセスして、課題管理情報101aから、対象の課題についてのラベルIDリストの項目の値を取得する。そして、ラベルIDリスト内の各ラベルIDについて、ラベル情報101dからラベル名の項目の値を取得することで、課題に対応したラベルをすべて取得する。 Next, it is determined whether or not the problem is compatible with the defect (S02). If the problem is compatible with the defect, information on the version in which the problem has occurred is acquired (S03). In the case of function development in which the problem is not dealing with defects, the process proceeds to step S04 without performing step S03. As the processing in step S03, for example, the branch processing unit 130 or the problem management unit 120 accesses the problem DB 101, and acquires the value of the item in the label ID list for the target problem from the problem management information 101a. Then, for each label ID in the label ID list, all the labels corresponding to the task are acquired by acquiring the value of the label name item from the label information 101d.
 このとき、バージョンを表すラベルが含まれるか否かを判定する。例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、ラベルIDリストとして“1,3,5”の文字列が得られる。これをカンマ(“,”)で分割して、ラベルIDとして“1”、“3”、“5”の3つを得る。そして、これらのラベルIDについて、図7(b)の例に示したラベル情報101dでは、それぞれ、“v0100”、“不具合”、“WIP”の文字列(ラベル)を得ることができる。その後、得られた各ラベルについて、バージョンを表す文字列であるか否かを、例えば所定の正規表現(例えば、“/v[0-9]{4}”など)に合致するか否かにより判定し、合致する場合にはバージョンを表す文字列とする。 At this time, it is determined whether or not a label indicating the version is included. For example, in the example of the task management information 101a shown in FIG. 4B, if the target task is a task with a record with the task ID = “5”, the character string “1, 3, 5” is used as the label ID list. Is obtained. This is divided by a comma (“,”) to obtain three label IDs “1”, “3”, and “5”. For these label IDs, in the label information 101d shown in the example of FIG. 7B, character strings (labels) of “v0100”, “defective”, and “WIP” can be obtained, respectively. Thereafter, whether or not each obtained label is a character string representing a version depends on whether or not it matches a predetermined regular expression (for example, “/ v [0-9] {4}”, etc.). If it matches, the character string representing the version is used.
 なお、本実施の形態では、上述したように、不具合修正の課題の情報からバージョン情報を抽出する際に、課題管理情報101aのラベルIDリストの項目と、ラベル情報101dのラベルIDの項目とを対応付けて、ラベル情報101dのラベル名から取得しているが、これに限られない。例えば、課題情報の管理が、課題管理情報101aではなく、不具合修正に特化した形で図6の不具合情報101cのようなデータ構成によって管理している場合には、不具合情報101cにおける発生バージョンの項目の値をそのまま用いるようにしてもよい。 In the present embodiment, as described above, when extracting version information from the problem correction problem information, the label ID list item of the problem management information 101a and the label ID item of the label information 101d are extracted. Correspondingly, it is acquired from the label name of the label information 101d, but is not limited to this. For example, when the problem information is managed not by the problem management information 101a but by a data configuration such as the defect information 101c in FIG. You may make it use the value of an item as it is.
 次に、ソーシャルコーディングシステム100のブランチ処理部130等により、課題に対応するブランチがあるか否かを判定する(S04)。ステップS04での処理としては、例えば、ステップS01において抽出した課題識別子が、機能開発の課題に係るものである場合は、当該課題識別子に基づいて生成したブランチ名について、リポジトリ管理システム200のブランチ管理部220を介してリポジトリDB201を検索し、対象のブランチの有無を判定する。 Next, the branch processing unit 130 of the social coding system 100 determines whether there is a branch corresponding to the task (S04). As the processing in step S04, for example, when the problem identifier extracted in step S01 relates to a function development problem, the branch management of the repository management system 200 for the branch name generated based on the problem identifier is performed. The repository DB 201 is searched through the unit 220 to determine whether there is a target branch.
 例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“1”のレコードの課題の場合は、ステップS01においてタイトルの項目から課題識別子として“C001”が得られるので、図3に示した機能開発用ブランチの命名規則に従って“feature/C001/DEV”というブランチ名を生成し、リポジトリDB201上でその有無を確認する。 For example, in the example of the task management information 101a shown in FIG. 4B, if the target task is a task with a record with the task ID = “1”, “C001” is set as the task identifier from the title item in step S01. Since it is obtained, a branch name “feature / C001 / DEV” is generated in accordance with the naming rule of the function development branch shown in FIG. 3, and the presence or absence is confirmed on the repository DB 201.
 また、ステップS01において抽出した課題識別子が、不具合修正の課題に係るものである場合は、当該課題識別子と、ステップS03で取得した発生バージョンとに基づいて生成したブランチ名について、リポジトリ管理システム200のブランチ管理部220を介してリポジトリDB201を検索し、対象のブランチの有無を判定する。 If the problem identifier extracted in step S01 is related to a problem to be corrected, the repository management system 200 uses the branch name generated based on the problem identifier and the generated version acquired in step S03. The repository DB 201 is searched via the branch management unit 220 to determine whether there is a target branch.
 例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、ステップS01においてタイトルの項目から課題識別子として“B003”が得られる。また、ステップS02において、ラベルID=“1”に対応するラベル名として、図7(b)に示したラベル情報101dの例から、発生バージョンとして“v0100”が得られるので、図3に示した不具合修正用ブランチの命名規則に従って“fix/B003/v0100/DEV”というブランチ名を生成し、リポジトリDB201上でその有無を確認する。 For example, in the example of the task management information 101a shown in FIG. 4B, if the target task is a task with a record with the task ID = “5”, “B003” is set as the task identifier from the title item in step S01. can get. Further, in step S02, “v0100” is obtained as the generated version from the example of the label information 101d shown in FIG. 7B as the label name corresponding to the label ID = “1”. A branch name “fix / B003 / v0100 / DEV” is generated in accordance with the naming rule of the defect correction branch, and the existence of the branch name is confirmed on the repository DB 201.
 ステップS04において課題に対応するブランチが既にリポジトリ上にある場合は、何もせずに(NOP:No OPeration)(S08)、ブランチの自動生成処理を終了する。一方、ステップS04において課題に対応するブランチがまだない場合は、次に、対象の課題のステータスが作業中であるか否か、すなわち、対象の課題の課題情報に作業中であることを表すラベルがあるか否かを判定する(S05)。 If the branch corresponding to the issue is already in the repository in step S04, nothing is done (NOP: No OPeration) (S08), and the automatic branch generation process is terminated. On the other hand, if there is no branch corresponding to the task in step S04, next, a label indicating whether the status of the target task is working, that is, the task information of the target task is working. It is determined whether or not there is (S05).
 ラベルの取得は、対象の課題について課題管理情報101aからラベルIDリストの項目の値を取得し、リストに含まれる各ラベルIDについて、ラベル情報101dからそれぞれ対応するラベル名を取得する。取得した各ラベルについて、作業中であることを表す“WIP(Work In Progress)”を表すラベルがあるか否かを判定する。例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、上述したように、課題管理情報101aからは、ラベルIDとして“1”、“3”、“5”の3つを得ることができ、さらに、図7(b)の例に示したラベル情報101dから、それぞれ、“v0100”、“不具合”、“WIP”のラベルを得ることができる。この中に、作業中を表す“WIP”のラベルが含まれていることから、対象の課題は作業中であると判定する。 In the acquisition of the label, the value of the item in the label ID list is acquired from the problem management information 101a for the target problem, and the corresponding label name is acquired from the label information 101d for each label ID included in the list. For each acquired label, it is determined whether or not there is a label indicating “WIP (Work In Progress)” indicating that work is in progress. For example, in the example of the task management information 101a shown in FIG. 4B, when the target task is a task with a record with the task ID = “5”, as described above, the task management information 101a displays the label ID. As shown in FIG. 7B, the label information 101d shown in the example of FIG. 7B can be used to obtain “v0100”, “defect”, and “WIP”, respectively. Can be obtained. Since the label of “WIP” indicating work is included in this, it is determined that the subject task is being worked.
 ステップS05において課題が作業中ではない場合は、何もせずに(NOP)(S08)、ブランチの自動生成処理を終了する。一方、ステップS05において課題が作業中である場合は、ステップS04において生成したブランチ名に基づいて、これを生成する際の分岐元となるブランチを特定する(S06)。分岐元となるブランチは、例えば、図3に示した各ブランチとその分岐元のブランチについての命名規則の情報に基づいて特定することができる。例えば、ステップS05において生成したブランチ名が“fix/B003/v0100/DEV”である場合、図3の表の命名規則から「(バージョンv0100に対する)不具合B003修正用ブランチ」であることが分かり、さらにその分岐元のブランチのブランチ名が“stable/v0100”であることを特定することができる。 If it is determined in step S05 that the task is not being worked on, nothing is done (NOP) (S08), and the automatic branch generation process is terminated. On the other hand, if the task is being worked on in step S05, the branch that is the branching source for generating this is specified based on the branch name generated in step S04 (S06). The branch that is the branching source can be specified based on, for example, information on the naming rules for each branch and the branching source branch shown in FIG. For example, if the branch name generated in step S05 is “fix / B003 / v0100 / DEV”, it can be seen from the naming convention of the table of FIG. It can be specified that the branch name of the branch source branch is “stable / v0100”.
 その後、リポジトリ管理システム200のブランチ管理部220を介して、ステップS06で特定した分岐元のブランチ名に係るブランチから、ステップS04において生成したブランチ名に係るブランチを新規に生成し(S07)、ブランチの自動生成処理を終了する。 Thereafter, a branch related to the branch name generated in step S04 is newly generated from the branch related to the branch name specified in step S06 via the branch management unit 220 of the repository management system 200 (S07). The automatic generation process is terminated.
 上記の一連の処理を、課題が作成されたタイミングや、課題のステータスが修正されたタイミングで実行する、もしくは定期的に実行することで、例えば、ステータスが“作業中”に変わったタイミングで自動的にブランチを生成することもできる。 By executing the above series of processing at the timing when the task is created, when the status of the task is modified, or periodically, for example, automatically when the status changes to “Working” You can also create a branch.
 図15のステップS3における開発者のブランチ(「機能開発用開発者ブランチ」や「不具合修正用開発者ブランチ」)を自動生成する場合も、基本的な処理は上述の図8に示した処理内容と同様である。開発者ブランチを生成する場合は、さらに開発者の情報を得るため、追加の処理として例えば、ステップS01の処理の前に、ソーシャルコーディングシステム100の課題管理部120が課題DB101にアクセスし、課題管理情報101aにおける対象の課題に係る担当者の項目の値を取得する処理を行う。この処理で担当者の情報を取得できなかった場合は、何もせずに(NOP)(S08)、ブランチの自動生成処理を終了する。 Even when the developer branch ("developer branch for function development" or "developer branch for defect correction") in step S3 in FIG. 15 is automatically generated, the basic processing is the processing content shown in FIG. It is the same. When generating a developer branch, in order to obtain further developer information, as an additional process, for example, before the process of step S01, the problem management unit 120 of the social coding system 100 accesses the problem DB 101 to perform problem management. A process of acquiring the value of the person in charge related to the subject problem in the information 101a is performed. If information on the person in charge cannot be acquired in this process, nothing is done (NOP) (S08), and the automatic branch generation process is terminated.
 また、ステップS04でブランチ名を生成する際に、図3に示したブランチの命名規則において従う規則を、開発者ブランチのものとする。例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、担当者の項目から“s-naka”が得られる。また、ステップS01においてタイトルの項目から課題識別子として“B003”が得られる。また、ステップS02において、ラベルID=“1”に対応するラベル名として、図7(b)に示したラベル情報101dの例から、発生バージョンとして“v0100”が得られる。これらから図3に示したブランチの命名規則に従ってブランチ名を生成する際に、“fix/B003/v0100/DEV”ではなく、“fix/B003/v0100/s-naka”というブランチ名を生成する。 Further, when the branch name is generated in step S04, the rule that follows the branch naming rule shown in FIG. 3 is that of the developer branch. For example, in the example of the task management information 101a shown in FIG. 4B, when the target task is a task having a record with the task ID = “5”, “s-naka” is obtained from the item of the person in charge. In step S01, “B003” is obtained as the assignment identifier from the title item. In step S02, “v0100” is obtained as the generated version from the example of the label information 101d shown in FIG. 7B as the label name corresponding to the label ID = “1”. From these, when the branch name is generated in accordance with the branch naming rule shown in FIG. 3, the branch name “fix / B003 / v0100 / s-naka” is generated instead of “fix / B003 / v0100 / DEV”.
 これにより、開発者ブランチについても課題との関連付けを行いつつ自動生成することができる。なお、開発者ブランチについては、課題の作成時に管理用のブランチの新規生成と合わせて生成してもよいし、この時点で担当者が設定されていない場合は、後に担当者が設定された際に、そのイベントをトリガとして開発者ブランチを自動生成するようにしてもよい。 This allows the developer branch to be automatically generated while associating with the issue. Note that the developer branch may be generated together with the new generation of the management branch at the time of issue creation. If the person in charge is not set at this time, the person in charge will be set later. In addition, a developer branch may be automatically generated using the event as a trigger.
 <2.コミットコメントの自動追加>
 本実施の形態では、上述したように、開発者ブランチの作成後、図15のステップS4において、ソースコードの作成・修正、テスト等の開発が行われ、完了したものを1つのコミットとして登録する際に、コミットと課題(変更票もしくは不具合票)との関連付けに係る情報をコミットコメントに自動的に追加することができる。以下では、このコミットコメントの自動追加の処理について説明する。
<2. Automatic addition of commit comments>
In this embodiment, as described above, after creating a developer branch, development such as source code creation / modification and testing is performed in step S4 of FIG. 15, and the completed one is registered as one commit. At this time, it is possible to automatically add information related to the association between the commit and the assignment (change vote or defect vote) to the commit comment. The process for automatically adding a commit comment will be described below.
 開発者がユーザ端末400上でソーシャルコーディングクライアント410を用いて開発を行い、コミットを実行すると、ソーシャルコーディングクライアント410のコミット処理部413が呼び出され、コミットコメントの追加の処理が行われる。図9は、コミット処理部413におけるコミットコメントの自動追加処理の流れの例について概要を示したフローチャートである。まず、コミットの対象のブランチ名から、対応する課題識別子を抽出する(S11)。 When the developer performs development using the social coding client 410 on the user terminal 400 and executes commit, the commit processing unit 413 of the social coding client 410 is called, and commit comment addition processing is performed. FIG. 9 is a flowchart showing an outline of an example of the flow of the commit comment automatic adding process in the commit processing unit 413. First, a corresponding problem identifier is extracted from the branch name to be committed (S11).
 図3に示した命名規則に従えば、例えば、機能開発における「機能開発用ブランチ」や「機能開発用開発者ブランチ」では、いずれも、ブランチ名が“feature/CXXX/~”となるため、ブランチ名を“/”で分割した文字列の先頭から2番目を取得すれば、課題識別子(この場合は“CXXX”)を得ることができる。同様に、不具合修正における「不具合修正用ブランチ」や「不具合修正用開発者ブランチ」でも、いずれも、ブランチ名が“fix/BXXX/~”となるため、ブランチ名を“/”で分割した文字列の先頭から2番目を取得すれば、課題識別子(この場合は“BXXX”)を得ることができる。 According to the naming convention shown in FIG. 3, for example, in the “functional development branch” and “functional development developer branch” in function development, the branch name is “feature / CXXX / ˜”. If the second character string from the top of the character string obtained by dividing the branch name by “/” is obtained, the task identifier (in this case, “CXXX”) can be obtained. Similarly, the “branch branch for defect correction” and “developer branch for defect correction” in the defect correction both have the branch name “fix / BXXX / ˜”, so the characters obtained by dividing the branch name with “/” If the second from the top of the column is acquired, the task identifier (in this case, “BXXX”) can be obtained.
 次に、コミット処理部413は、ネットワーク500を介してソーシャルコーディングシステム100の課題管理部120にアクセスし、課題管理部120を介して、課題DB101にステップS11で抽出した課題識別子に係る課題の情報が保持されているか否かを判定する(S12)。課題識別子に係る課題の情報が課題DB101に保持されている(当該課題が課題管理部120による管理対象となっている)か否かは、例えば、課題管理情報101aのタイトルの項目に対象の課題識別子が含まれているものがあるか否かによって判断することができる。タイトルの項目に代えて、もしくはこれに加えて内容詳細の項目に対象の課題識別子が含まれるか否かによって判断するようにしてもよい。 Next, the commit processing unit 413 accesses the problem management unit 120 of the social coding system 100 via the network 500, and issues information related to the problem identifier extracted in step S11 in the problem DB 101 via the problem management unit 120. Is determined whether or not is held (S12). Whether or not the task information related to the task identifier is held in the task DB 101 (the task is a management target by the task management unit 120), for example, the subject of the title item of the task management information 101a The determination can be made based on whether or not there is an identifier included. Instead of or in addition to the title item, determination may be made based on whether or not the subject detail identifier is included in the content detail item.
 ステップS12において対象の課題が課題DB101に保持されていない場合は、何もせずに(NOP)(S14)、コミットコメントの自動追加処理を終了する。一方、ステップS12において対象の課題が課題DB101に保持されている場合は、コミット処理部413は、ソーシャルコーディングシステム100の課題管理部120を介して対象の課題に係る課題IDの項目とタイトルの項目の値を取得し、これらをコミット時のコメントに追加して(S13)、コミットコメントの自動追加処理を終了する。 If the target issue is not held in the issue DB 101 in step S12, nothing is done (NOP) (S14), and the commit comment automatic addition process is terminated. On the other hand, when the target problem is held in the problem DB 101 in step S <b> 12, the commit processing unit 413 issues the problem ID item and the title item related to the target problem via the problem management unit 120 of the social coding system 100. Are added to the comment at the time of commit (S13), and the commit comment automatic adding process is terminated.
 <3-1.Pullリクエスト時のブランチの自動指定>
 本実施の形態では、上述したように、図15のステップS5においてPullリクエストを行う際に、ブランチの情報に基づいてマージ先(分岐元)となるブランチを判断し、マージ先およびマージ元のブランチ名を自動的に指定・補完することで、Pullリクエストとブランチおよび課題との関連付けを自動的に行うことができる。以下では、このPullリクエスト時のブランチの自動指定の処理について説明する。
<3-1. Automatic branch specification at Pull request>
In this embodiment, as described above, when a Pull request is made in step S5 of FIG. 15, the branch to be merged (branch source) is determined based on the branch information, and the merge destination and merge source branch are determined. By automatically specifying and complementing the name, it is possible to automatically associate the Pull request with the branch and the assignment. In the following, a description will be given of the automatic branch designation process at the time of the Pull request.
 図10は、ユーザ端末400上でソーシャルコーディングクライアント410により表示されるリポジトリ表示画面の例について概要を示した図である。開発者が、ユーザ端末400上でソーシャルコーディングクライアント410を用いて開発を完了し、Pullリクエストを行う際に、図10に示したようなリポジトリ表示画面において、“ブランチ名”として開発成果物が含まれるマージ元の開発者ブランチを指定し、“Pullリクエスト”ボタンを押下する。これにより、ソーシャルコーディングクライアント410のPullリクエスト作成部414が呼び出される。本実施の形態では、Pullリクエスト作成部414は、ネットワーク500を介してソーシャルコーディングシステム100のPullリクエスト処理部140を呼び出し、マージ先(分岐元)のブランチの自動指定の処理を行う。 FIG. 10 is a diagram showing an outline of an example of a repository display screen displayed by the social coding client 410 on the user terminal 400. When the developer completes development using the social coding client 410 on the user terminal 400 and makes a Pull request, the development product is included as a “branch name” in the repository display screen as shown in FIG. The developer branch to be merged is specified, and the “Pull request” button is pressed. Thereby, the Pull request creation unit 414 of the social coding client 410 is called. In the present embodiment, the pull request creation unit 414 calls the pull request processing unit 140 of the social coding system 100 via the network 500, and performs automatic designation processing of the branch at the merge destination (branch source).
 図11は、Pullリクエスト処理部140におけるブランチの自動指定処理の流れの例について概要を示したフローチャートである。まず、図10の例に示したリポジトリ表示画面において現在表示されている(指定されている)ブランチ、すなわちマージ元となるブランチのブランチ名の情報を取得する(S21)。例えば、ソーシャルコーディングクライアント410のPullリクエスト作成部414がリポジトリ表示画面から取得して、ソーシャルコーディングシステム100のPullリクエスト処理部140を呼び出す際にパラメータとして追加することで、Pullリクエスト処理部140は当該ブランチの情報を取得することができる。 FIG. 11 is a flowchart showing an outline of an example of a flow of automatic branch designation processing in the pull request processing unit 140. First, the branch name information of the branch currently displayed (designated) on the repository display screen shown in the example of FIG. 10, that is, the branch to be merged is acquired (S21). For example, the Pull request processing unit 140 of the social coding client 410 acquires from the repository display screen and is added as a parameter when the Pull request processing unit 140 of the social coding system 100 is called. Information can be acquired.
 次に、ステップS21で取得したマージ元のブランチ名からマージ先のブランチを特定する(S22)。本実施の形態では、各ブランチが図3に示したような命名規則に従ってネーミングされていることを前提とし、これに基づいてマージ先となるブランチ名を特定する。すなわち、マージ元のブランチ名が図3に示した命名規則におけるどのブランチに該当するかを判定し、対応する分岐元(マージ先)のブランチ名の命名規則に基づいてマージ先のブランチ名を生成する。例えば、マージ元のブランチ名が“fix/B002/v0100/h-naka”であった場合、「不具合B002の開発者h-naka用ブランチ」(図3の表の最下段)であるため、分岐元ブランチのブランチ名として、命名規則に基づいて“fix/B002/v0100/DEV”を得ることができる。 Next, the merge destination branch is specified from the merge source branch name acquired in step S21 (S22). In this embodiment, it is assumed that each branch is named according to a naming rule as shown in FIG. 3, and based on this, a branch name to be merged is specified. That is, it determines which branch in the naming rule shown in FIG. 3 corresponds to the branch name of the merge source, and generates the branch name of the merge destination based on the branch name naming rule of the corresponding branch source (merge destination) To do. For example, if the branch name of the merge source is “fix / B002 / v0100 / h-naka”, it is “branch for developer h-naka of defect B002” (the bottom row in the table of FIG. 3), so the branch As the branch name of the original branch, “fix / B002 / v0100 / DEV” can be obtained based on the naming rule.
 その後、Pullリクエスト処理部140は、ステップS21で取得したブランチ名をマージ元ブランチ、ステップS22で生成したブランチ名をマージ先ブランチとしてPullリクエスト画面を生成し、ユーザ端末400のソーシャルコーディングクライアント410に送信して画面表示させる(S23)。図12は、ユーザ端末400上でソーシャルコーディングクライアント410により表示されるPullリクエスト画面の例について概要を示した図である。図示するように、マージ元およびマージ先のリポジトリ名、ブランチ名が自動的に設定・選択された状態で画面を表示させることができる。 Thereafter, the Pull request processing unit 140 generates a Pull request screen using the branch name acquired in Step S21 as the merge source branch and the branch name generated in Step S22 as the merge destination branch, and transmits the Pull request screen to the social coding client 410 of the user terminal 400. The screen is displayed (S23). FIG. 12 is a diagram showing an outline of an example of a pull request screen displayed by the social coding client 410 on the user terminal 400. As shown in the drawing, the screen can be displayed in a state where the repository name and branch name of the merge source and merge destination are automatically set and selected.
 なお、このPullリクエスト画面において“Pullリクエスト送信”ボタンを押下すると、ソーシャルコーディングクライアント410のPullリクエスト作成部414によりPullリクエストが作成され、ソーシャルコーディングシステム100のPullリクエスト処理部140に送信されて、Pullリクエストに係る処理が実行される。 Note that when a “Pull request transmission” button is pressed on this Pull request screen, a Pull request creation unit 414 of the social coding client 410 creates a Pull request, which is transmitted to the Pull request processing unit 140 of the social coding system 100 and is sent to the Pull request screen. Processing related to the request is executed.
 <3-2.Pullリクエストへのコメントの自動追加>
 本実施の形態では、上記のPullリクエストを行う際に、さらに、当該Pullリクエストに対してコメントを自動的に追加することができる。これにより、Pullリクエストに対してレビュー等を行うリーダー等が、当該Pullリクエストがどの課題に対応したものであるのか等の情報を容易に把握することが可能となる。
<3-2. Automatic addition of comments to Pull requests>
In the present embodiment, when making the above Pull request, a comment can be automatically added to the Pull request. As a result, a reader or the like who performs a review or the like on the Pull request can easily grasp information such as what problem the Pull request corresponds to.
 具体的には、上述の図11で示したPullリクエスト時のブランチの自動指定の処理において、例えば、ステップS22でソーシャルコーディングシステム100のPullリクエスト処理部140が、マージ元のブランチ名から、図3に示した命名規則に基づいてマージ先のブランチ名を特定した際に、合わせて、マージ元のブランチ名に対応する課題の情報を取得する処理を行う。課題の情報は、例えば、上述の図9に示した処理のステップS11、S12と同様に、マージ元のブランチ名から、図3に示した命名規則に基づいて課題識別子を抽出し、当該課題識別子に係る課題情報が課題DB101に保持されているか否かを判定することで取得することができる。 Specifically, in the process of automatically specifying a branch at the time of a Pull request shown in FIG. 11 described above, for example, the Pull request processing unit 140 of the social coding system 100 in FIG. When the merge destination branch name is specified based on the naming rule shown in (1), a process for acquiring information on the assignment corresponding to the merge source branch name is also performed. For example, the task information is extracted from the merge source branch name based on the naming rule shown in FIG. 3 in the same manner as steps S11 and S12 of the process shown in FIG. It can be acquired by determining whether or not the task information related to is stored in the task DB 101.
 マージ元のブランチに対応する課題の情報が課題DB101から得られた場合は、課題管理情報101aにおける課題IDやタイトルなどの情報をPullリクエストに対するコメントとして自動的に追加した上で、図11のステップS23でPullリクエスト画面を生成する。図13は、ユーザ端末400上でソーシャルコーディングクライアント410により表示されるPullリクエスト画面の例について概要を示した図である。図示するように、マージ元のブランチに対応する課題(図13の例では不具合“B002”)に係る課題IDやタイトルの情報が自動的にコメントとして設定された状態で画面を表示させることができる。 When the information of the problem corresponding to the merge source branch is obtained from the problem DB 101, information such as the problem ID and title in the problem management information 101a is automatically added as a comment for the Pull request, and then the steps of FIG. In S23, a Pull request screen is generated. FIG. 13 is a diagram showing an outline of an example of a pull request screen displayed by the social coding client 410 on the user terminal 400. As shown in the figure, the screen can be displayed in a state in which the task ID and title information relating to the task corresponding to the merge-source branch (defect “B002” in the example of FIG. 13) is automatically set as a comment. .
 以上に説明したように、本発明の一実施の形態である開発支援システム1によれば、必要なタイミングでブランチを自動的に作成することでブランチの数をできるだけ抑え、可能な限り最新の状態から開発作業に着手させることが可能である。また、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うことで、作業負荷を低減させ、ソフトウェア開発作業における作業効率を向上させることができる。 As described above, according to the development support system 1 which is an embodiment of the present invention, the number of branches is suppressed as much as possible by automatically creating branches at a necessary timing, and the latest state possible. It is possible to start development work. Further, by automatically associating assignments, branches, commits, and Pull requests, it is possible to reduce the work load and improve the work efficiency in software development work.
 具体的には、課題が作成されたり、ステータスが変わったり、開発者がアサインされたりなどのタイミングで、自動的に当該課題に対応したブランチを命名規則に従って作成する。また、作成された課題の情報に基づいて、分岐元となるブランチを自動的に指定する。これにより、課題の作成等のタイミングでブランチを自動的に作成するとともに、課題とブランチとの関連付けも自動的に行うことができる。 Specifically, a branch corresponding to the subject is automatically created according to the naming rule when the issue is created, the status is changed, or the developer is assigned. Also, the branch source branch is automatically specified based on the created task information. This makes it possible to automatically create a branch at the timing of creating a problem and to automatically associate a problem with a branch.
 また、コミット対象のブランチ名の情報に基づいて、ブランチの命名規則から、当該ブランチに対応する変更票もしくは不具合票の識別情報を判断し、その情報をコミットコメントに付与する。これにより、コミットと課題(変更票もしくは不具合票)との関連付けも自動的に行うことができる。 Also, based on the information on the name of the branch to be committed, the identification information of the change slip or defect slip corresponding to the branch is determined from the branch naming rules, and the information is given to the commit comment. Thereby, the association between the commit and the issue (change vote or defect vote) can be automatically performed.
 また、マージ元のブランチ名の情報に基づいて、ブランチの命名規則から、マージ先(分岐元)となるブランチを判断し、その情報に基づいて、Pullリクエストの作成時に必要となるマージ先およびマージ元のブランチ名を自動的に指定・補完する。また、マージ元のブランチ名の情報に基づいて、対応する課題の情報を取得し、これをPullリクエストの作成時にコメントとして自動的に追加する。これらにより、Pullリクエストとブランチおよび課題との関連付けを自動的に行うことができる。 Also, based on the information of the branch name of the merge source, the branch that becomes the merge destination (branch source) is determined from the branch naming rules, and based on the information, the merge destination and the merge required when creating the Pull request are determined. Automatically specify and complete the original branch name. Further, information on the corresponding problem is acquired based on the information of the branch name of the merge source, and this is automatically added as a comment when creating the Pull request. As a result, the Pull request can be automatically associated with the branch and the assignment.
 以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記の実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。 As mentioned above, the invention made by the present inventor has been specifically described based on the embodiments. However, the present invention is not limited to the above-described embodiments, and various modifications can be made without departing from the scope of the invention. Needless to say. For example, the above-described embodiment has been described in detail for easy understanding of the present invention, and is not necessarily limited to the one having all the configurations described. In addition, it is possible to add, delete, and replace other configurations for a part of the configuration of the above-described embodiment.
 本発明は、ソーシャルコーディングシステムを利用したプログラム開発を支援する開発支援システムに利用可能である。 The present invention can be used in a development support system that supports program development using a social coding system.
1…開発支援システム、
100…ソーシャルコーディングシステム、101…課題DB、101a…課題管理情報、101b…開発機能情報、101c…不具合情報、101d…ラベル情報、110…ユーザ認証部、120…課題管理部、130…ブランチ処理部、140…Pullリクエスト処理部、
200…リポジトリ管理システム、201…リポジトリDB、210…リポジトリ管理部、220…ブランチ管理部、230…マージ処理部、
300…課題管理システム、310…課題管理部、
400…ユーザ端末、401…ローカルリポジトリDB、410…ソーシャルコーディングクライアント、411…リポジトリ処理部、412…課題処理部、413…コミット処理部、414…Pullリクエスト作成部、
500…ネットワーク。
1 ... Development support system,
DESCRIPTION OF SYMBOLS 100 ... Social coding system, 101 ... Assignment DB, 101a ... Assignment management information, 101b ... Development function information, 101c ... Defect information, 101d ... Label information, 110 ... User authentication part, 120 ... Assignment management part, 130 ... Branch processing part 140 ... Pull request processing unit,
200 ... Repository management system 201 ... Repository DB 210 ... Repository management unit 220 ... Branch management unit 230 ... Merge processing unit
300 ... assignment management system, 310 ... assignment management section,
400 ... User terminal, 401 ... Local repository DB, 410 ... Social coding client, 411 ... Repository processing unit, 412 ... Problem processing unit, 413 ... Commit processing unit, 414 ... Pull request creation unit,
500 ... Network.

Claims (6)

  1.  開発成果物およびその変更履歴をリポジトリに保持するリポジトリ管理システムと、
     前記開発成果物と課題とを関連付けて管理するソーシャルコーディングシステムと、を有する開発支援システムであって、
     前記ソーシャルコーディングシステムは、
     前記課題の情報を管理する課題管理部と、
     前記リポジトリにおいてブランチの生成を行うブランチ処理部と、を有し、
     前記ブランチ処理部は、指定された前記課題の情報に基づいて、分岐元となる第1のブランチを特定し、前記第1のブランチから分岐させて、前記課題に対応する第2のブランチを生成する、開発支援システム。
    A repository management system that maintains development artifacts and their change history in a repository;
    A social coding system that associates and manages the development deliverables and issues, and a development support system comprising:
    The social coding system
    An issue management unit for managing information on the issue;
    A branch processing unit for generating a branch in the repository,
    The branch processing unit identifies a first branch that is a branch source based on the specified information of the problem, branches from the first branch, and generates a second branch corresponding to the problem Development support system.
  2.  請求項1に記載の開発支援システムにおいて、
     前記ソーシャルコーディングシステムの前記ブランチ処理部は、指定された前記課題の状態が所定の状態になっていることを条件に、前記第2のブランチを生成する、開発支援システム。
    The development support system according to claim 1,
    The development support system, wherein the branch processing unit of the social coding system generates the second branch on condition that a state of the designated task is in a predetermined state.
  3.  請求項1に記載の開発支援システムにおいて、
     前記ソーシャルコーディングシステムの前記ブランチ処理部は、指定された前記課題の情報から、ブランチおよび分岐元のブランチの命名規則の情報に基づいて、前記第1のブランチおよび前記第2のブランチの名称を特定する、開発支援システム。
    The development support system according to claim 1,
    The branch processing unit of the social coding system identifies the names of the first branch and the second branch from information on the designated task based on information on a branch and a branching source naming rule. Development support system.
  4.  請求項3に記載の開発支援システムにおいて、
     さらに、前記ソーシャルコーディングシステムを介して前記リポジトリに前記開発成果物を登録するソーシャルコーディングクライアントを有し、
     前記ソーシャルコーディングクライアントは、前記リポジトリにおいて前記第2のブランチに前記開発成果物を登録するためのコミット処理を行うコミット処理部を有し、
     前記コミット処理部は、前記第2のブランチの名称から前記命名規則の情報に基づいて、前記第2のブランチに対応する前記課題を特定する情報を取得し、前記ソーシャルコーディングシステムの前記課題管理部において、前記課題が管理対象となっている場合に、前記課題管理部を介して前記課題に係る情報を取得して、取得した情報をコミット処理を行う際のコメントに追加する、開発支援システム。
    In the development support system according to claim 3,
    And a social coding client for registering the development product in the repository via the social coding system,
    The social coding client includes a commit processing unit that performs a commit process for registering the development product in the second branch in the repository;
    The commit processing unit obtains information for identifying the issue corresponding to the second branch based on the naming rule information from the name of the second branch, and the issue management unit of the social coding system The development support system according to claim 1, wherein when the issue is to be managed, information related to the issue is acquired via the issue management unit, and the acquired information is added to a comment when performing commit processing.
  5.  請求項3に記載の開発支援システムにおいて、
     さらに、前記ソーシャルコーディングシステムを介して前記リポジトリに前記開発成果物を登録するソーシャルコーディングクライアントを有し、
     前記ソーシャルコーディングシステムは、さらに、前記リポジトリにおいて前記開発成果物が登録された前記第2のブランチを前記第1のブランチに反映させるためのPullリクエストを受け付けて、前記Pullリクエストに係る処理を行うPullリクエスト処理部を有し、
     前記ソーシャルコーディングシステムの前記Pullリクエスト処理部は、前記ソーシャルコーディングクライアントから指定された前記Pullリクエストに係る前記第2のブランチの情報を取得し、前記第2のブランチの名称から前記命名規則の情報に基づいて、マージ先となる前記第1のブランチの名称を特定し、マージ元を前記第2のブランチ、マージ先を前記第1のブランチとした前記Pullリクエストを作成するための画面を前記ソーシャルコーディングクライアントを介して表示させる、開発支援システム。
    In the development support system according to claim 3,
    And a social coding client for registering the development product in the repository via the social coding system,
    The social coding system further accepts a Pull request for reflecting the second branch in which the development deliverable is registered in the repository to the first branch, and performs processing related to the Pull request. A request processing unit,
    The Pull request processing unit of the social coding system acquires information on the second branch related to the Pull request designated from the social coding client, and converts the name of the second branch into information on the naming rule. Based on the above, the name of the first branch to be merged is specified, the screen for creating the Pull request with the merge source as the second branch and the merge destination as the first branch is the social coding Development support system that displays via client.
  6.  請求項5に記載の開発支援システムにおいて、
     前記ソーシャルコーディングシステムの前記Pullリクエスト処理部は、前記ソーシャルコーディングクライアントから指定された前記Pullリクエストに係る前記第2のブランチの情報を取得し、前記第2のブランチの名称から前記命名規則の情報に基づいて、前記第2のブランチに対応する前記課題を特定する情報を取得し、前記ソーシャルコーディングシステムの前記課題管理部において、前記課題が管理対象となっている場合に、前記課題管理部を介して前記課題に係る情報を取得して、取得した情報を前記Pullリクエストに対するコメントとして追加した前記Pullリクエストを作成するための画面を前記ソーシャルコーディングクライアントを介して表示させる、開発支援システム。
     
     
     
     
     
     
    The development support system according to claim 5,
    The Pull request processing unit of the social coding system acquires information on the second branch related to the Pull request designated from the social coding client, and converts the name of the second branch into information on the naming rule. Based on the information, the information specifying the problem corresponding to the second branch is acquired, and when the problem is a management target in the problem management unit of the social coding system, the information is determined via the problem management unit. A development support system for acquiring information related to the problem and displaying a screen for creating the Pull request in which the acquired information is added as a comment for the Pull request via the social coding client.





PCT/JP2014/065140 2014-06-06 2014-06-06 Development support system WO2015186256A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2014/065140 WO2015186256A1 (en) 2014-06-06 2014-06-06 Development support system
JP2015556316A JP5973091B2 (en) 2014-06-06 2014-06-06 Development support system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/065140 WO2015186256A1 (en) 2014-06-06 2014-06-06 Development support system

Publications (1)

Publication Number Publication Date
WO2015186256A1 true WO2015186256A1 (en) 2015-12-10

Family

ID=54766348

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/065140 WO2015186256A1 (en) 2014-06-06 2014-06-06 Development support system

Country Status (2)

Country Link
JP (1) JP5973091B2 (en)
WO (1) WO2015186256A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020015191A1 (en) * 2018-07-18 2020-01-23 平安科技(深圳)有限公司 Business rule releasing and managing method, electronic device and readable storage medium
WO2021040512A1 (en) * 2019-08-30 2021-03-04 Mimos Berhad Managing changes and package integrity in an integrated development system
JP2022104700A (en) * 2020-12-29 2022-07-11 マーク マリアン ヴァシレ Software development support system, software development support server and software development support program

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319552A1 (en) * 2007-04-02 2009-12-24 Juniper Networks, Inc. Software merging utility
JP2013191003A (en) * 2012-03-14 2013-09-26 Hitachi Solutions Ltd Branch repository management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090319552A1 (en) * 2007-04-02 2009-12-24 Juniper Networks, Inc. Software merging utility
JP2013191003A (en) * 2012-03-14 2013-09-26 Hitachi Solutions Ltd Branch repository management system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TAKESHI ISHIKAWA ET AL.: "Design of Communication Supporting System Cooperating with Revision Control System", IPSJ SIG NOTES, vol. 2001, no. 92, 19 September 2001 (2001-09-19), pages 23 - 30 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020015191A1 (en) * 2018-07-18 2020-01-23 平安科技(深圳)有限公司 Business rule releasing and managing method, electronic device and readable storage medium
WO2021040512A1 (en) * 2019-08-30 2021-03-04 Mimos Berhad Managing changes and package integrity in an integrated development system
JP2022104700A (en) * 2020-12-29 2022-07-11 マーク マリアン ヴァシレ Software development support system, software development support server and software development support program
JP7150002B2 (en) 2020-12-29 2022-10-07 マーク マリアン ヴァシレ Software development support system, software development support server and software development support program

Also Published As

Publication number Publication date
JP5973091B2 (en) 2016-08-23
JPWO2015186256A1 (en) 2017-04-20

Similar Documents

Publication Publication Date Title
US11966409B2 (en) Extensible attributes for data warehouses
US10055113B2 (en) System and method for modifying user interface elements
US9811394B1 (en) Application programming interface recipe cloning
Ganesh et al. Openerp/odoo-an open source concept to erp solution
US9754242B2 (en) Deployment mechanism for non-versioning business process artifacts
US10261893B2 (en) Implicit coordination of deployment and regression testing across data centers and system clusters
US8863119B2 (en) Methods and systems for generating a dynamic workflow in a multi-tenant database environment
US20160202968A1 (en) Modularized xml namespaces
US8966442B2 (en) Custom code innovation management
US20130159036A1 (en) Runtime generation of instance contexts via model-based data relationships
WO2011118003A1 (en) Web application building system, web application building method, web application building program, and recording medium on which web application building is recorded
JP5973091B2 (en) Development support system
JP4786998B2 (en) Software reuse parts management system
US11604765B2 (en) Database and file structure configurations for managing text strings to be provided by a graphical user interface
US20160253157A1 (en) Software refactoring
JP2001356907A (en) Data base system with processing code information and information processing system
JP2010123045A (en) Work procedure manual generation device, method, and program
JP2006268121A (en) Web application system and program for the same
JP2018112875A (en) Knowledge managing device, knowledge managing method and computer program
JP2009223822A (en) Source code update notifying device and source code update notifying method
US20200134080A1 (en) Synchronization of customized templates across multiple cloud-based systems
US20190278570A1 (en) Annotating Features of a Resource to Facilitate Consumption in Different Computing Environments
US20220244938A1 (en) Method and system for code maintenance
JP2007115155A (en) Program structure management device and program structure management program
US10769183B2 (en) Identifying resources in user interfaces for feedback

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2015556316

Country of ref document: JP

Kind code of ref document: A

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14893893

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14893893

Country of ref document: EP

Kind code of ref document: A1