JP6024559B2 - プログラムおよびバージョン管理方法 - Google Patents
プログラムおよびバージョン管理方法 Download PDFInfo
- Publication number
- JP6024559B2 JP6024559B2 JP2013067790A JP2013067790A JP6024559B2 JP 6024559 B2 JP6024559 B2 JP 6024559B2 JP 2013067790 A JP2013067790 A JP 2013067790A JP 2013067790 A JP2013067790 A JP 2013067790A JP 6024559 B2 JP6024559 B2 JP 6024559B2
- Authority
- JP
- Japan
- Prior art keywords
- commit
- tree
- data
- merge
- branch
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。
第2の実施の形態を説明する。第2の実施の形態の情報処理装置は、ソフトウェア開発プロジェクトで作成されるソースコードのバージョンを管理する。第2の実施の形態のバージョン管理システムとしては、例えば、Gitを使用することができる。
情報処理装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態のプロセッサ11の一例であり、RAM102(または、HDD103)は、第1の実施の形態のメモリ12の一例である。
第2の実施の形態のバージョン管理システムは、1つのプロジェクトに関するファイル群が、1つのディレクトリ(ルートディレクトリ)を頂点とする木構造としてファイルシステム上に格納されていることを前提とする。あるディレクトリの配下には、他のディレクトリ(サブディレクトリ)や、ソースコードを記載したファイルが配置され得る。
各オブジェクトは、ヘッダと本文が圧縮されて1つの圧縮ファイルとしてリポジトリに格納される。このとき、各オブジェクトには160ビット(16進数表記で40文字)の数値がオブジェクトIDとして付与される。リポジトリは、オブジェクトIDと圧縮ファイルとを対応付けて保持し、オブジェクトIDから所望の圧縮ファイルを抽出できるようにする。リポジトリとして、例えば、キーバリュー形式のデータベースを使用できる。
コミットAは、ツリーaを参照する。ツリーaはルートツリーであり、コミットAが示すバージョンにおけるルートディレクトリに相当する。ツリーaは、サブツリーであるツリーa1とブロブ1を参照する。ツリーa1は、ブロブ2を参照する。コミットAから辿ることができるツリーa,a1およびブロブ1,2の集合は、コミットAが示すバージョンにおけるファイルシステム上の実体データに相当すると言うことができる。
図5は、ブランチのマージ例を示す図である。
ソフトウェア開発プロジェクトでは、複数のバージョン系列についての開発が並行して進められることがある。例えば、セキュリティ対策や実行速度向上などを目的として既存のソースコードをメンテナンスする作業と、新たな機能をソフトウェアに追加するために新たなソースコードを書く作業とを、並行して行うことがある。直列の1つのバージョン系列はブランチと呼ばれることがある。複数のブランチのうち、ソフトウェア開発の中心となるブランチは、マスタブランチ(または、メインラインやトランク)と呼ばれ得る。一方、マスタブランチから分岐して作成されたブランチは、フィーチャブランチと呼ばれ得る。フィーチャブランチは、後でマスタブランチにマージされることが予定される。
情報処理装置100は、コミットをリポジトリに追加した後に、ユーザから入力された命令に応じてそのコミットを編集することがある。コミットの編集の例として、同じブランチに属する2以上のコミットの入れ替えや統合などが挙げられる。コミットの入れ替えは、プロジェクト管理の都合上、あるバージョンの修正とその次のバージョンの修正とを、実際に行われた順序とは逆順で行われたものとして取り扱いたいときに行われ得る。コミットの統合は、プロジェクト管理の都合上、あるバージョンの小さな修正とその次のバージョンの小さな修正とを、同時に行われたものとして管理したいときに行われ得る。
図7は、過去のマージ結果を利用した第1のマージ例を示す図である。
一例として、次のような場合を考える。マスタブランチmbの末尾がコミットDでありフィーチャブランチfb1の末尾がコミットFであるときに、マスタブランチmbとフィーチャブランチfb1とがマージされる。そして、マージ結果に対応するコミットYおよびツリーyが、ユーザから見えないようにリポジトリに格納される。その後、フィーチャブランチfb1の末尾に、ツリーgを参照するコミットG0が追加される。
一例として、次のような場合を考える。マスタブランチmbの末尾がコミットDでありフィーチャブランチfb1の末尾がコミットFであるときに、マスタブランチmbとフィーチャブランチfb1とがマージされる。そして、コミットYおよびツリーyが、ユーザから見えないようにリポジトリに格納される。次に、リベースによってフィーチャブランチfb1のコミット列E,Fがコミット列F+,E+に編集される。その後、フィーチャブランチfb1の末尾に、ツリーgを参照するコミットGが追加される。
図9は、第2の実施の形態の情報処理装置の機能例を示すブロック図である。
情報処理装置100は、リポジトリ110、コミット追加部121、コミット編集部122、マージ部123およびガーベッジコレクタ124を有する。コミット追加部121、コミット編集部122、マージ部123およびガーベッジコレクタ124は、例えば、CPU101に実行させるソフトウェアのモジュールとして実現される。
マージ履歴テーブル114は、マージ履歴を登録するテーブルであり、リポジトリ110のマージ履歴記憶部113に記憶される。マージ履歴テーブル114は、親ツリーおよびマージ結果の項目を含む。親ツリーの項目には、マージされた2以上のルートツリーのツリーIDが列挙される。マージ結果の項目には、マージ結果として生成されたルートツリーのツリーIDが記載される。例えば、マージ履歴テーブル114には、親ツリーとしてのツリーd,fとマージ結果としてのツリーyとが対応付けられて登録される。
(S10)マージ部123は、マージする複数のブランチそれぞれについて、末尾のコミット(または、作業対象のコミット)から共通のコミットに向かって、コミット列を辿る。そして、マージ部123は、ブランチ毎に、コミットが参照するルートツリーのツリーIDをコミットの順序に従って列挙したツリーIDの列を生成する。
第3の実施の形態を説明する。前述の第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の事項については説明を省略する。第3の実施の形態の情報処理装置は、ルートツリーレベルで過去のマージ結果を利用することができないときであっても、サブツリーレベルで過去のマージ結果を利用できるようにする。第3の実施の形態の情報処理装置は、図2,9と同様のブロック構成として実現することができる。以下では、図2,9で用いたものと同じ符号を用いて第3の実施の形態を説明する。
一例として、次のような場合を考える。コミットグラフ上には、マスタブランチmbおよびフィーチャブランチfb1,fb2が表されている。マスタブランチmbはコミット列A,B,C,Dを含む。フィーチャブランチfb1,fb2は、マスタブランチmbのコミットAからそれぞれ分岐したブランチである。フィーチャブランチfb1はコミット列E,Fを含み、フィーチャブランチfb2はコミット列H,Iを含む。
サブマージ履歴テーブル115は、サブツリーレベルのマージ履歴を登録するテーブルであり、リポジトリ110のマージ履歴記憶部113に記憶される。サブマージ履歴テーブル115は、サブツリーおよびマージ結果の項目を含む。サブツリーの項目には、マージされた2以上のサブツリー(コミットが参照するルートツリー以外のツリー)のツリーIDが列挙される。マージ結果の項目には、マージ結果としてのサブツリーのツリーIDが記載される。例えば、サブマージ履歴テーブル115には、マージ元としてのツリーd1,f1とマージ結果としてのツリーy1とが対応付けられて登録される。
ステップS10〜S18は、図11に示した第2の実施の形態のマージ処理と同じである。第3の実施の形態のマージ処理では、情報処理装置100は、ルートツリーレベルで利用できる過去のマージ結果が存在しないと判断したとき、ステップS12とステップS16の間において以下に説明するステップS20〜S23を実行する。
11 プロセッサ
12 メモリ
13 バージョン管理グラフ
13a,13b ブランチ
14 履歴情報
Claims (5)
- コンピュータに、
それぞれが複数のバージョンのデータの何れかを参照しており自ノードが有する情報に応じた識別子が付与される複数のノードを含む、バージョン間の関係を示すバージョン管理グラフに対して、既存のノードが有する情報を編集することを許容し、
前記バージョン管理グラフに含まれる第1のブランチと第2のブランチとをマージするとき、過去に行われたマージについて2以上のバージョンのデータとマージ結果のデータとの対応関係を示す履歴情報に基づいて、前記第1のブランチに含まれるノードが参照する第1のバージョンのデータと前記第2のブランチに含まれるノードが参照する第2のバージョンのデータとから生成された過去のマージ結果のデータを検索し、
検索された前記過去のマージ結果のデータを用いて、前記第1のブランチと前記第2のブランチとをマージしたときの新たなマージ結果のデータを生成する、
処理を実行させるプログラム。 - 検索された前記過去のマージ結果のデータを参照する他のノードを前記バージョン管理グラフに追加し、前記他のノードを含む前記バージョン管理グラフに基づいて、前記過去のマージ結果のデータを利用するマージ方法を決定する、
請求項1記載のプログラム。 - 前記履歴情報は、前記2以上のバージョンのデータに含まれる2以上のサブデータと前記マージ結果のデータに含まれるマージ結果のサブデータとの対応関係を更に示し、
前記過去のマージ結果のデータが存在しない場合、前記履歴情報に基づいて、前記第1のバージョンのデータに含まれる第1のサブデータと前記第2のバージョンのデータに含まれる第2のサブデータとから生成された過去のマージ結果のサブデータを検索し、
検索された前記過去のマージ結果のサブデータを用いて、前記第1のブランチと前記第2のブランチとをマージしたときの前記新たなマージ結果のデータを生成する、
請求項1または2記載のプログラム。 - 前記編集は、一のブランチの中でノードの順序を入れ替えることを含む、
請求項1乃至3の何れか一項に記載のプログラム。 - コンピュータが実行するバージョン管理方法であって、
それぞれが複数のバージョンのデータの何れかを参照しており自ノードが有する情報に応じた識別子が付与される複数のノードを含む、バージョン間の関係を示すバージョン管理グラフに対して、既存のノードが有する情報を編集することを許容し、
前記バージョン管理グラフに含まれる第1のブランチと第2のブランチとをマージするとき、過去に行われたマージについて2以上のバージョンのデータとマージ結果のデータとの対応関係を示す履歴情報に基づいて、前記第1のブランチに含まれるノードが参照する第1のバージョンのデータと前記第2のブランチに含まれるノードが参照する第2のバージョンのデータとから生成された過去のマージ結果のデータを検索し、
検索された前記過去のマージ結果のデータを用いて、前記第1のブランチと前記第2のブランチとをマージしたときの新たなマージ結果のデータを生成する、
バージョン管理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013067790A JP6024559B2 (ja) | 2013-03-28 | 2013-03-28 | プログラムおよびバージョン管理方法 |
US14/177,999 US9646030B2 (en) | 2013-03-28 | 2014-02-11 | Computer-readable medium storing program and version control method |
EP14155734.8A EP2784665B1 (en) | 2013-03-28 | 2014-02-19 | Program and version control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013067790A JP6024559B2 (ja) | 2013-03-28 | 2013-03-28 | プログラムおよびバージョン管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014191672A JP2014191672A (ja) | 2014-10-06 |
JP6024559B2 true JP6024559B2 (ja) | 2016-11-16 |
Family
ID=50184735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013067790A Expired - Fee Related JP6024559B2 (ja) | 2013-03-28 | 2013-03-28 | プログラムおよびバージョン管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9646030B2 (ja) |
EP (1) | EP2784665B1 (ja) |
JP (1) | JP6024559B2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330184B2 (en) | 2013-12-02 | 2016-05-03 | Cltirix Systems, Inc. | Methods and systems for machine learning to discover application compatibility status |
US9600396B2 (en) * | 2014-03-11 | 2017-03-21 | Citrix Systems, Inc. | Computer-implemented methods and systems for determining application matching status |
EP2937779B1 (en) * | 2014-04-24 | 2017-01-25 | Semmle Limited | Source code violation matching and attribution |
US9916227B2 (en) | 2014-05-05 | 2018-03-13 | Citrix Systems, Inc. | Systems and methods for analyzing software compatibility |
US9417985B2 (en) * | 2014-11-14 | 2016-08-16 | Semmle Limited | Distributed analysis and attribution of source code |
US9507590B2 (en) | 2014-12-08 | 2016-11-29 | Semmle Limited | Transitive source code violation matching and attribution |
US9557968B1 (en) * | 2014-12-23 | 2017-01-31 | Github, Inc. | Comparison graph |
US20170139679A1 (en) * | 2015-11-18 | 2017-05-18 | King.Com Limited | Methods and apparatus using a node graph architecture |
US10007674B2 (en) * | 2016-06-13 | 2018-06-26 | Palantir Technologies Inc. | Data revision control in large-scale data analytic systems |
US9887975B1 (en) | 2016-08-03 | 2018-02-06 | KryptCo, Inc. | Systems and methods for delegated cryptography |
US9639353B1 (en) | 2016-09-19 | 2017-05-02 | Semmle Limited | Computing quality metrics of source code developers |
US9690690B1 (en) | 2016-09-30 | 2017-06-27 | Semmle Limited | Scalable transitive violation matching |
US9639352B1 (en) | 2016-10-12 | 2017-05-02 | Semmle Limited | Computing rework churn for contributions to a code base |
US10810009B2 (en) | 2017-07-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Visualizations of software project and contributor activity |
US10503495B2 (en) * | 2017-08-02 | 2019-12-10 | Accenture Global Solutions Limited | Component management platform |
CN107908421B (zh) * | 2017-09-29 | 2022-06-24 | 北京创鑫旅程网络技术有限公司 | 软件代码版本管理与发布的方法及装置 |
US10430184B2 (en) * | 2017-10-24 | 2019-10-01 | Semmle Limited | Violation match sets |
US10303469B1 (en) * | 2017-12-28 | 2019-05-28 | Semmle Limited | Commit graph generation |
US10467004B2 (en) * | 2017-12-28 | 2019-11-05 | Semmle Limited | Commit history linearization |
EP3627343A1 (en) * | 2018-09-19 | 2020-03-25 | censhare AG | Efficient in-memory multi-version concurrency control for a trie data structure based database |
US10705832B2 (en) * | 2018-09-28 | 2020-07-07 | Atlassian Pty Ltd | Efficient storage and analysis of source code modification history data |
CN109358898B (zh) * | 2018-10-24 | 2022-09-13 | 网易(杭州)网络有限公司 | 一种信息处理方法、装置、电子设备和存储介质 |
US10922291B2 (en) | 2018-12-21 | 2021-02-16 | Palantir Technologies Inc. | Data pipeline branching |
US10671373B1 (en) * | 2018-12-30 | 2020-06-02 | Microsoft Technology Licensing, Llc | Mechanism for automatically incorporating software code changes into proper channels |
JP7183092B2 (ja) * | 2019-03-25 | 2022-12-05 | アズビル株式会社 | ソース情報管理装置およびソース情報管理方法 |
CN112445514B (zh) * | 2019-09-05 | 2024-06-07 | 腾讯科技(深圳)有限公司 | 一种代码评审方法及相关产品 |
US11741084B2 (en) * | 2019-09-27 | 2023-08-29 | Autodesk, Inc. | High frequency data management (HFDM) |
US11604928B2 (en) | 2020-04-30 | 2023-03-14 | International Business Machines Corporation | Efficiently managing predictive changes for a conversational agent |
US11500623B2 (en) * | 2021-01-22 | 2022-11-15 | Microsoft Technology Licensing, Llc | Reverting merges across branches |
CN114296784A (zh) * | 2021-12-29 | 2022-04-08 | 上海赛美特软件科技有限公司 | 一种数据筛选方法、装置、设备及存储介质 |
CN117055947A (zh) * | 2023-08-17 | 2023-11-14 | 广东科伺智能科技有限公司 | 二进制项目文件的版本控制方法、装置、存储介质及设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0756721A (ja) | 1993-08-11 | 1995-03-03 | Nippon Telegr & Teleph Corp <Ntt> | リビジョン管理方法 |
JPH0997171A (ja) | 1995-09-29 | 1997-04-08 | Hitachi Software Eng Co Ltd | ソースプログラムのバージョン管理方法 |
JP2002099419A (ja) | 2000-09-25 | 2002-04-05 | Sony Corp | ソフトウエアのバージョン管理方法及びバージョン管理システム |
US20040230903A1 (en) * | 2003-05-16 | 2004-11-18 | Dethe Elza | Method and system for enabling collaborative authoring of hierarchical documents with associated business logic |
US7899883B2 (en) * | 2008-06-13 | 2011-03-01 | Microsoft Corporation | Merging versions of documents using multiple masters |
US8307010B2 (en) * | 2008-09-26 | 2012-11-06 | Microsoft Corporation | Data feature tracking through hierarchical node sets |
JP2010176594A (ja) * | 2009-01-30 | 2010-08-12 | Kyocera Mita Corp | ソースコードバージョン管理プログラム及びソースコードバージョン管理方法 |
US9390124B2 (en) * | 2013-03-15 | 2016-07-12 | Microsoft Technology Licensing, Llc. | Version control system using commit manifest database tables |
-
2013
- 2013-03-28 JP JP2013067790A patent/JP6024559B2/ja not_active Expired - Fee Related
-
2014
- 2014-02-11 US US14/177,999 patent/US9646030B2/en not_active Expired - Fee Related
- 2014-02-19 EP EP14155734.8A patent/EP2784665B1/en not_active Not-in-force
Also Published As
Publication number | Publication date |
---|---|
EP2784665B1 (en) | 2015-09-16 |
EP2784665A1 (en) | 2014-10-01 |
JP2014191672A (ja) | 2014-10-06 |
US9646030B2 (en) | 2017-05-09 |
US20140297592A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6024559B2 (ja) | プログラムおよびバージョン管理方法 | |
US20240265061A1 (en) | System for synchronization of changes in edited websites and interactive applications | |
EP3103025B1 (en) | Content based organization of file systems | |
US8433673B2 (en) | System and method for supporting data warehouse metadata extension using an extender | |
US10423499B2 (en) | Cataloging metadata for replication management and recovery | |
EP3362916B1 (en) | Signature-based cache optimization for data preparation | |
CN107003935A (zh) | 优化数据库去重 | |
US8805777B2 (en) | Data record collapse and split functionality | |
CN102902529A (zh) | 变换的上下文知晓数据源管理 | |
CN105320680A (zh) | 一种数据同步方法及装置 | |
CN112988217B (zh) | 用于快速全网代码溯源检测的代码库设计方法及检测方法 | |
JP2006172446A (ja) | 複合データアクセス | |
JP2012234509A (ja) | トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN102426680B (zh) | 使用求散列的逻辑帐户表 | |
JP7279524B2 (ja) | データ管理プログラム、データ管理方法およびデータ管理システム | |
JP6588988B2 (ja) | 業務プログラム生成支援システムおよび業務プログラム生成支援方法 | |
JP2018109898A (ja) | データマイグレーションシステム | |
JP2018085042A (ja) | データベース管理装置、情報処理システム、データベース管理方法及びデータベース管理プログラム | |
CN113886505A (zh) | 一种基于搜索引擎和关系型数据库实现动态建模的管理系统 | |
JP2010176594A (ja) | ソースコードバージョン管理プログラム及びソースコードバージョン管理方法 | |
JP2015153323A (ja) | シンボリック実行プログラム、シンボリック実行方法及びシンボリック実行装置 | |
US10229128B2 (en) | Method and apparatus for the generation, organization, storage and retrieval of time stamped blocks of data | |
WO2023276212A1 (ja) | ソフトウェア部品更新システム及びソフトウェア部品更新方法 | |
JP2018005822A (ja) | 仮想データベースシステム管理装置、管理方法及び管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151204 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160905 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160913 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160926 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6024559 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |