Gitサブツリーの詳細

自分のプロジェクトでこのツールまたはそのツールを使用することを決定する場合、エンジニアはサポート文書を検討するだけでなく、将来の潜在的な問題を回避するために一連の実験を実施する必要があります。 長期的に設計されたCMポリシーについて話している場合、選択エラーの価格は非常に高くなります。







このペーパーの目標は、 Gitサブツリー管理ツールを実践することです。









リビジョン1.7.11から、 contrib / subtreeディレクトリGitアップストリームリポジトリには、 サブツリーでの作業を自動化するツールが含まれています







git-subtree(1)サービスは、実際にはgit-read-tree(1)およびgit-write-tree(1)関数を使用する便利なアドオンです。 したがって、 git-subtree(1)のリンクadd / pull / pushコマンドです:







git subtree add --prefix=<subdir> <remote> <ref>
      
      





リモートリポジトリのブランチ名またはタグ名のいずれかです。







さらに、次のコマンドを使用して、リモートリポジトリをローカルリポジトリの構成ファイル.git / configに事前に追加した場合:







 bash-4.4$ git remote add build-system ../../remote/build-system.git
      
      





build-systemはリモートリポジトリの名前../../remote/build-system.gitであり、後でgit-subtree(1)add / pull / pushコマンドを使用して、上流のremote / repositoryを参照できます名前によるbuild-system.git







現時点では、 git-subtree(1)は実際には開発されていませんが、 Gitプロジェクトの現在の開発度についてのみ最新の状態に保たれています。







ただし、 git-subtree(1)は、サブツリーを操作するための最も一般的で強力なツールです。









テスト環境



前回の git-subrepo(1)の 記事では、テストリポジトリを使用した単純なディレクトリ構造を使用して、関数が実際にどのように機能するかを示しました。 次の環境を再現します。







 bash-4.4$ vim _init.sh #!/bin/sh CWD=`pwd` mkdir remote owner user cd remote git init --bare build-system.git git init --bare platform.git cd ../owner git clone $CWD/remote/build-system.git git clone $CWD/remote/platform.git cd build-system echo -e "\n[master] build-system 1.0.0\n" >README git add README git commit -m "init build-system master 1.0.0" git push cd ../platform echo -e "\n[master] platform 1.0.0\n" >README git add README git commit -m "init platform master 1.0.0" git push cd ../../user git clone $CWD/remote/build-system.git git clone $CWD/remote/platform.git cd $CWD :wq bash-4.4$ chmod a+x ./_init.sh bash-4.4$ ./_init.sh bash-4.4$
      
      





ここに







所有者 - プロジェクト作成者の作業ディレクトリ。
遠い - メインプロジェクトplatform.gitおよびサブプロジェクトbuild-system.gitのアップストリームリポジトリがあるプロジェクトの作成者のサーバーを表すディレクトリ。
ユーザー - ユーザーまたは開発チームのメンバーの作業ディレクトリ


git-subtree(1)の機能を研究する目標として、 Git Subrepoの記事で説明したすべてのタスクを検討しますが、2つのツールの違いを考慮します。









サブツリーを接続する



remote / platform.gitリポジトリの現在の状態を覚えておいてください:







 bash-4.4$ bash-4.4$ cd owner/platform/ bash-4.4$ git log commit 7fad4becbd13258216fb95cbe9d987dd33f0be6d (HEAD -> master, origin/master) Author: user <___@_______> Date: Thu Nov 1 20:16:33 2018 +0300 init platform master 1.0.0 bash-4.4$
      
      





そして、アップストリームリポジトリremote / build-system.gitのmasterブランチをbuild-systemディレクトリに接続します。







 bash-4.4$ bash-4.4$ git subtree add --prefix=build-system ../../remote/build-system.git/ master git fetch ../../remote/build-system.git/ master warning: no common commits remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From ../../remote/build-system * branch master -> FETCH_HEAD Added dir 'build-system' bash-4.4$
      
      





remote / platform.gitリポジトリのローカルコピーの新しい状態を検討します。







 bash-4.4$ bash-4.4$ git log --graph * commit 47905bcb80be6f7cb3030513986fad4df548f812 (HEAD -> master) |\ Merge: 7fad4be 783c6d5 | | Author: user <___@_______> | | Date: Thu Nov 1 20:20:20 2018 +0300 | | | | Add 'build-system/' from commit '783c6d5af1100e9665f930c818c861ff011bed19' | | | | git-subtree-dir: build-system | | git-subtree-mainline: 7fad4becbd13258216fb95cbe9d987dd33f0be6d | | git-subtree-split: 783c6d5af1100e9665f930c818c861ff011bed19 | | git-subtree-repo: ../../remote/build-system.git/ | | git-subtree-ref: master | | | * commit 783c6d5af1100e9665f930c818c861ff011bed19 | Author: user <___@_______> | Date: Thu Nov 1 20:16:33 2018 +0300 | | init build-system master 1.0.0 | * commit 7fad4becbd13258216fb95cbe9d987dd33f0be6d (origin/master) Author: user <___@_______> Date: Thu Nov 1 20:16:33 2018 +0300 init platform master 1.0.0 bash-4.4$
      
      





ここでは、 git-subtree(1)addコマンドが残っているというメッセージに注意する必要があります。 実際、このコマンドを使用して、 プラットフォームリポジトリに違いを入れました。







 bash-4.4$ bash-4.4$ git diff 7fad4becbd13258216fb95cbe9d987dd33f0be6d 47905bcb80be6f7cb3030513986fad4df548f812 diff --git a/build-system/README b/build-system/README new file mode 100644 index 0000000..73a41c7 --- /dev/null +++ b/build-system/README @@ -0,0 +1,3 @@ + +[master] build-system 1.0.0 + bash-4.4$
      
      





さらに、変更の履歴がもう少し進んだときに、サブツリーの接続の詳細をより詳細に検討し、変更をアップストリームリポジトリremote / platform.gitに配置します







 bash-4.4$ bash-4.4$ git push Enumerating objects: 6, done. Counting objects: 100% (6/6), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 582 bytes | 582.00 KiB/s, done. Total 5 (delta 0), reused 0 (delta 0) To ../../remote/platform.git 7fad4be..47905bc master -> master bash-4.4$
      
      





もう一度git-subtree(1)addコマンドポストを見てください:







  Add 'build-system/' from commit '783c6d5af1100e9665f930c818c861ff011bed19' git-subtree-dir: build-system git-subtree-mainline: 7fad4becbd13258216fb95cbe9d987dd33f0be6d git-subtree-split: 783c6d5af1100e9665f930c818c861ff011bed19 git-subtree-repo: ../../remote/build-system.git/ git-subtree-ref: master
      
      





これらのメッセージは有用であるため、必要に応じて、接続履歴とサブツリーの現在の状態を確認できます。 元のgit-subtree(1)コマンドは、メッセージの最後の2行を追加しません。 プロジェクトの1つまたは別のサブツリーが作成されたリモートリポジトリのブランチおよびブランチに関する情報を簡単に検索できるように、このユーティリティをわずかに変更しました。







次のようにして、変更の完全な差分ファイルを取得できます。







 bash-4.4$ bash-4.4$ git clone https://github.com/radix-platform/git.git bash-4.4$ cd git bash-4.4$ git checkout git-subtree-2.19.1 bash-4.4$ git diff v2.19.1 > ../git-subtree-2.19.1.patch bash-4.4$
      
      





サンプルをより現実的にするには、アップストリームリポジトリremote / build-system.gitに変更を加えます。







 bash-4.4$ bash-4.4$ cd owner/build-system/ bash-4.4$ vim README bash-4.4$ cat README [master] build-system 1.0.1 bash-4.4$
      
      





これらの変更を保存します。







 bash-4.4$ bash-4.4$ git add README bash-4.4$ git commit -m "update build-system version to 1.0.1" [master e5c5446] update build-system version to 1.0.1 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$
      
      





それらをアップストリームのremote / build-system.gitリポジトリに渡します







 bash-4.4$ bash-4.4$ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 274 bytes | 274.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ../../remote/build-system.git 783c6d5..e5c5446 master -> master bash-4.4$
      
      





そのためビルドシステムリポジトリのリビジョンは783c6d5からe5c5446に変更されました。







 bash-4.4$ bash-4.4$ git log commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 (HEAD -> master, origin/master) Author: user <___@_______> Date: Thu Nov 1 20:26:52 2018 +0300 update build-system version to 1.0.1 commit 783c6d5af1100e9665f930c818c861ff011bed19 Author: user <___@_______> Date: Thu Nov 1 20:16:33 2018 +0300 init build-system master 1.0.0 bash-4.4$
      
      





この状態を覚えて、 remote / platform.gitコンテナリポジトリの操作に進みます。









アップストリームサブツリーリポジトリからの変更の取得



サブツリーのアップストリームリポジトリの変更についてまだ知らず、 プラットフォームコードの改善に取り組んでいるとします。







 bash-4.4$ bash-4.4$ cd owner/platform/ bash-4.4$ vim README bash-4.4$ cat README [master] platform 1.0.1 bash-4.4$ bash-4.4$ git add README bash-4.4$ git commit -m "update platform version to 1.0.1" [master 442c9e9] update platform version to 1.0.1 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$ bash-4.4$ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 4 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 306 bytes | 306.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ../../remote/platform.git 47905bc..442c9e9 master -> master bash-4.4$
      
      





作業の結果、 remote / platform.gitリポジトリの次のステータスが得られました。







 bash-4.4$ bash-4.4$ git log --graph * commit 442c9e94c9890032fb2f3123661345d465e2849f (HEAD -> master, origin/master) | Author: user <___@_______> | Date: Thu Nov 1 20:41:40 2018 +0300 | | update platform version to 1.0.1 | * commit 47905bcb80be6f7cb3030513986fad4df548f812 |\ Merge: 7fad4be 783c6d5 | | Author: user <___@_______> | | Date: Thu Nov 1 20:20:20 2018 +0300 | | | | Add 'build-system/' from commit '783c6d5af1100e9665f930c818c861ff011bed19' | | | | git-subtree-dir: build-system | | git-subtree-mainline: 7fad4becbd13258216fb95cbe9d987dd33f0be6d | | git-subtree-split: 783c6d5af1100e9665f930c818c861ff011bed19 | | git-subtree-repo: ../../remote/build-system.git/ | | git-subtree-ref: master | | | * commit 783c6d5af1100e9665f930c818c861ff011bed19 | Author: user <___@_______> | Date: Thu Nov 1 20:16:33 2018 +0300 | | init build-system master 1.0.0 | * commit 7fad4becbd13258216fb95cbe9d987dd33f0be6d Author: user <___@_______> Date: Thu Nov 1 20:16:33 2018 +0300 init platform master 1.0.0 bash-4.4$
      
      





ここで、プロジェクトのメインリポジトリのコードの改善に取り組んでいる間に、 ビルドシステムサブツリーのアップストリームリポジトリで何が起こったのかを知っておくといいでしょう。 git subtree --listコマンドで最初にサブツリーをスクロールします:







 bash-4.4$ bash-4.4$ git subtree --list build-system ../../remote/build-system.git/ branch master HEAD bash-4.4$
      
      





このコマンドは、単純な形式で、サブツリーディレクトリ、サブツリーのアップストリームリポジトリのURL、リンクの種類(ブランチまたはタグ)、リンクの名前、およびサブツリーにコードを配置したリポジトリの指定されたブランチまたはタグのリビジョンを表示します。 ただし、 ビルドシステムサブプロジェクトの開発が進んでおり、masterブランチのヘッドを指すことはもはや有効ではないことを覚えています。 むしろ、これは私たちのリポジトリに保存したいものに関するメッセージであり、実際の状況ではありません。







サブツリーのアップストリームリポジトリでコードがどれだけ進行したかを調べるには、サブツリーもスクロールする必要がありますが、 -dオプションを使用します。







 bash-4.4$ bash-4.4$ git subtree -d --list Looking for externals... Commit: 47905bcb80be6f7cb3030513986fad4df548f812 build-system ../../remote/build-system.git/ branch master HEAD The 'build-system' subtree seems not updated: original revision: 783c6d5af1100e9665f930c818c861ff011bed19 remote revision: e5c5446967599065dc02a269d8fcfc2c1d3c4f65 You can update 'build-system' subtree by following command: git subtree pull --prefix=build-system ../../remote/build-system.git/ master bash-4.4$
      
      





現在、出力は、メインリポジトリのコードに取り組んでいる間に、 ビルドシステムサブツリーのアップストリームリポジトリのマスターブランチが先に進んだことを示唆しています。 さらに、 git subtree -d --listコマンドは、次のようにアップストリームサブツリーリポジトリに変更を加えることができるというヒントを発行しました







 bash-4.4$ bash-4.4$ git subtree pull --prefix=build-system ../../remote/build-system.git/ master remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From ../../remote/build-system * branch master -> FETCH_HEAD hint: Waiting for your editor to close the file...
      
      





このコマンドは、 -m "commit message"を指定しなかったため、メッセージテキストでエディターを開きます。







マージコミット 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65'



#コミットメッセージを入力して、このマージが必要な理由を説明してください。

#特に、更新されたアップストリームをトピックブランチにマージする場合。



#「#」で始まる行は無視され、空のメッセージは中止されます

#コミット。



このテキストをより有益なものに置き換えます。







アップストリームbuild-system.gitリポジトリのマスターから変更をプルします。



マージコミット 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65'



このメッセージを保存してエディターを閉じると、次の出力が得られます。







 Merge made by the 'recursive' strategy. build-system/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$
      
      





つまり、アップストリームリポジトリremote / build-system.gitの変更を受け取り、メインリポジトリremote / platform.gitのローカルコピーのビルドシステムサブツリーに保存しました。







ローカルリポジトリのステータスを確認します。







 bash-4.4$ bash-4.4$ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean bash-4.4$
      
      





プロジェクトの他のユーザーがこれらの変更を取得できるようにするには、それらをアップストリームリポジトリremote / platform.gitに配置する必要があります







 bash-4.4$ bash-4.4$ git push Enumerating objects: 9, done. Counting objects: 100% (8/8), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 583 bytes | 583.00 KiB/s, done. Total 5 (delta 0), reused 0 (delta 0) To ../../remote/platform.git 442c9e9..ea52eab master -> master bash-4.4$
      
      





プラットフォームリポジトリのローカルコピーに含まれている内容と、 リモート/ platform.gitアップストリームリポジトリを見てみましょう。







 bash-4.4$ bash-4.4$ git log --graph * commit ea52eabd5910159efabd80adcf522f22bf6a2af2 (HEAD -> master, origin/master) |\ Merge: 442c9e9 e5c5446 | | Author: user <___@_______> | | Date: Thu Nov 1 20:48:05 2018 +0300 | | | | Pull changes from master of upstream build-system.git repository. | | | | Merge commit 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65' | | | * commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 | | Author: user <___@_______> | | Date: Thu Nov 1 20:26:52 2018 +0300 | | | | update build-system version to 1.0.1 | | * | commit 442c9e94c9890032fb2f3123661345d465e2849f | | Author: user <___@_______> | | Date: Thu Nov 1 20:41:40 2018 +0300 | | | | update platform version to 1.0.1 | | * | commit 47905bcb80be6f7cb3030513986fad4df548f812 |\ \ Merge: 7fad4be 783c6d5 | |/ Author: user <___@_______> | | Date: Thu Nov 1 20:20:20 2018 +0300 | | | | Add 'build-system/' from commit '783c6d5af1100e9665f930c818c861ff011bed19' | | | | git-subtree-dir: build-system | | git-subtree-mainline: 7fad4becbd13258216fb95cbe9d987dd33f0be6d | | git-subtree-split: 783c6d5af1100e9665f930c818c861ff011bed19 | | git-subtree-repo: ../../remote/build-system.git/ | | git-subtree-ref: master | | | * commit 783c6d5af1100e9665f930c818c861ff011bed19 | Author: user <___@_______> | Date: Thu Nov 1 20:16:33 2018 +0300 | | init build-system master 1.0.0 | * commit 7fad4becbd13258216fb95cbe9d987dd33f0be6d Author: user <___@_______> Date: Thu Nov 1 20:16:33 2018 +0300 init platform master 1.0.0 bash-4.4$
      
      







プラットフォームサブツリーとして接続された時点でのremote / build-system.gitリポジトリの初期状態は、 783c6d5af1100e9665f930c818c861ff011bed19でした 。 ただし、 プラットフォームリポジトリのコードの作業中に、リポジトリの状態が変わり、 e5c5446967599065dc02a269d8fcfc2c1d3c4f65に等しくなりました



ビルドシステムの初期状態( 783c6d5af1100e9665f930c818c861ff011bed19 )は、 442c9e94c9890032fb2f3123661345d465e2849fの時点ですでにプラットフォームリポジトリの履歴にありました。 したがって、 442c9e94c9890032fb2f3123661345d465e2849fプラットフォーム状態とe5c5446967599065dc02a269d8fcfc2c1d3c4f65の システム構築状態を取得し 、それらの差を計算し、その結果の差をマスターブランチに適用する必要があります。







これはブランチをマージする標準操作であり、その本質は次のように表現できます。







  p[n] = p[n-1] + diff(p[n-1], b[n])
      
      





どこで







  p[n] = ea52eabd5910159efabd80adcf522f22bf6a2af2, p[n-1] = 442c9e94c9890032fb2f3123661345d465e2849f, b[n] = e5c5446967599065dc02a269d8fcfc2c1d3c4f65.
      
      





ここで、 pはマスターブランチとして機能し、 bは 、新しい機能を作成するために以前にマスターから分離されたブランチの役割を果たします。







再びgit-subtree(1)ユーティリティがgit-subtree-pullコマンドの実行中に準備してくれたメッセージを考えてみましょう:







  git subtree pull --prefix=build-system ../../remote/build-system.git/ master
      
      







マージコミット 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65'



#コミットメッセージを入力して、このマージが必要な理由を説明してください。

#特に、更新されたアップストリームをトピックブランチにマージする場合。



#「#」で始まる行は無視され、空のメッセージは中止されます

#コミット。



このメッセージには、私たちにとって重要な情報、つまり状態が含まれています







  b[n] = e5c5446967599065dc02a269d8fcfc2c1d3c4f65
      
      





プラットフォームリポジトリのmasterブランチに「 アップロードする前に、 remote / build-system.gitリポジトリのmasterブランチが配置されていました







もちろん、 git-subtree-pullコマンドを実行するときに手動でコミットメッセージを実行することはあまり便利ではありませんが、状態を渡す別の方法







  b[n] = e5c5446967599065dc02a269d8fcfc2c1d3c4f65
      
      





この場合、 git-subtree(1)ユーティリティは存在しません。







-mコントロールを使用する場合







  git subtree pill -m "Our own message" ...
      
      





その場合、状態b [n]の値が失われ、コメントは有益ではなく、したがって、まったく役に立たなくなります。







ビルドシステムリポジトリのマスターブランチの状態が47905bcb80be6f7cb3030513986fad4df548f812の元のマウントポイントから移動した 、接続されたサブツリーのリストを表示している間、常にremote / build-system.gitの変更の通知を受け取ることに注意してください。 つまり、コマンドで-dオプションを使用します。







  git subtree -d --list
      
      





常に次のようなメッセージが表示されます。







 bash-4.4$ bash-4.4$ git subtree -d --list Looking for externals... Commit: 47905bcb80be6f7cb3030513986fad4df548f812 build-system ../../remote/build-system.git/ branch master HEAD The 'build-system' subtree seems not updated: original revision: 783c6d5af1100e9665f930c818c861ff011bed19 remote revision: e5c5446967599065dc02a269d8fcfc2c1d3c4f65 You can update 'build-system' subtree by following command: git subtree pull --prefix=build-system ../../remote/build-system.git/ master bash-4.4$
      
      





これは、接続されたサブツリーに関するすべての情報が、 47905bcb80be6f7cb3030513986fad4df548f812コミットに伴うメッセージ内にあるために発生します。







 bash-4.4$ bash-4.4$ git show 47905bcb80be6f7cb3030513986fad4df548f812 commit 47905bcb80be6f7cb3030513986fad4df548f812 Merge: 7fad4be 783c6d5 Author: user <___@_______> Date: Thu Nov 1 20:20:20 2018 +0300 Add 'build-system/' from commit '783c6d5af1100e9665f930c818c861ff011bed19' git-subtree-dir: build-system git-subtree-mainline: 7fad4becbd13258216fb95cbe9d987dd33f0be6d git-subtree-split: 783c6d5af1100e9665f930c818c861ff011bed19 git-subtree-repo: ../../remote/build-system.git/ git-subtree-ref: master diff --cc build-system/README index 0000000,0000000..73a41c7 new file mode 100644 --- /dev/null +++ b/build-system/README @@@ -1,0 -1,0 +1,3 @@@ ++ ++[master] build-system 1.0.0 ++ bash-4.4$
      
      





この情報のリポジトリは他にありません。







唯一のことは、コマンドを実行するときに、 プラットフォーム側でremote / build-system.gitリポジトリのmasterブランチを更新するたびに、







  git subtree -d --list
      
      





文字列の値のみが変更されます







  remote revision: e5c5446967599065dc02a269d8fcfc2c1d3c4f65
      
      





そして、 ビルドシステムサブツリーに新しい変更が必要かどうか、または現時点では必要でないかどうかを判断する必要があります。







ただし、 リモート/ build-system.gitリポジトリに実際の変更がなかった場合、コマンドは次のようになるため、必要な頻度でpullコマンドを実行することは難しくありません。







  git subtree pull --prefix=build-system ../../remote/build-system.git/ master
      
      





適切なメッセージが表示されます:







 bash-4.4$ bash-4.4$ git subtree pull --prefix=build-system ../../remote/build-system.git/ master From ../../remote/build-system * branch master -> FETCH_HEAD Already up to date. bash-4.4$
      
      







ユーザーによるコードの取得



これで、アップストリームリポジトリremote / platform.gitのすべてのユーザーは、単一のgit-pull(1)コマンドで完全に構成されたソースツリーを取得できます。







 bash-4.4$ bash-4.4$ cd user/platform/ bash-4.4$ bash-4.4$ git pull remote: Enumerating objects: 15, done. remote: Counting objects: 100% (15/15), done. remote: Compressing objects: 100% (8/8), done. remote: Total 13 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (13/13), done. From ../../remote/platform 7fad4be..ea52eab master -> origin/master Updating 7fad4be..ea52eab Fast-forward README | 2 +- build-system/README | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 build-system/README bash-4.4$
      
      





さらに、ユーザーはプロジェクトのメインリポジトリだけでなく、そのすべてのサブツリーの開発履歴も追跡できます。







 bash-4.4$ bash-4.4$ git log -3 --graph * commit ea52eabd5910159efabd80adcf522f22bf6a2af2 (HEAD -> master, origin/master, origin/HEAD) |\ Merge: 442c9e9 e5c5446 | | Author: user <___@_______> | | Date: Thu Nov 1 20:48:05 2018 +0300 | | | | Pull changes from master of upstream build-system.git repository. | | | | Merge commit 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65' | | | * commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 | | Author: user <___@_______> | | Date: Thu Nov 1 20:26:52 2018 +0300 | | | | update build-system version to 1.0.1 | | * | commit 442c9e94c9890032fb2f3123661345d465e2849f | | Author: user <___@_______> | | Date: Thu Nov 1 20:41:40 2018 +0300 | | | | update platform version to 1.0.1 bash-4.4$
      
      







サブツリーの変更をアップストリームリポジトリに配信する



ファイルの状態とプラットフォームリポジトリ自体を覚えておいてください。







 bash-4.4$ bash-4.4$ git log -3 --graph * commit ea52eabd5910159efabd80adcf522f22bf6a2af2 (HEAD -> master, origin/master, origin/HEAD) |\ Merge: 442c9e9 e5c5446 | | Author: user <___@_______> | | Date: Thu Nov 1 20:48:05 2018 +0300 | | | | Pull changes from master of upstream build-system.git repository. | | | | Merge commit 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65' | | | * commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 | | Author: user <___@_______> | | Date: Thu Nov 1 20:26:52 2018 +0300 | | | | update build-system version to 1.0.1 | | * | commit 442c9e94c9890032fb2f3123661345d465e2849f | | Author: user <___@_______> | | Date: Thu Nov 1 20:41:40 2018 +0300 | | | | update platform version to 1.0.1 bash-4.4$
      
      





ビルドシステムサブツリーに変更を加えます。 これを行うには、 プラットフォーム/ build-system / READMEファイルを編集します







 bash-4.4$ bash-4.4$ cd owner/platform/ bash-4.4$ bash-4.4$ vim build-system/README bash-4.4$ cat build-system/README [master] build-system 1.0.2 bash-4.4$ bash-4.4$ git add build-system/README bash-4.4$ git commit -m "build-system is updated to version 1.0.2 from platform side" [master abaa2c5] build-system is updated to version 1.0.2 from platform side 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$
      
      





ただし、これらの変更をオリジン/マスタープラットフォームリポジトリに記録しません。 つまり、 git-push(1)コマンドは実行しませんが、 git-subtree-pushremote / build-system.gitリポジトリのオリジンで直接実行します







 bash-4.4$ bash-4.4$ git subtree push --prefix=build-system ../../remote/build-system.git/ master git push using: ../../remote/build-system.git/ master Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ../../remote/build-system.git/ e5c5446..0673142 0673142942ccf53514a276e855a98514952bb713 -> master bash-4.4$
      
      





サブツリーをスクロールして、元のremote / build-system.gitリポジトリのHEADマスターブランチが先に進むことを確認します







 bash-4.4$ bash-4.4$ git subtree -d --list Looking for externals... Commit: 47905bcb80be6f7cb3030513986fad4df548f812 build-system ../../remote/build-system.git/ branch master HEAD The 'build-system' subtree seems not updated: original revision: 783c6d5af1100e9665f930c818c861ff011bed19 remote revision: 0673142942ccf53514a276e855a98514952bb713 You can update 'build-system' subtree by following command: git subtree pull --prefix=build-system ../../remote/build-system.git/ master bash-4.4$
      
      





さらに、 プラットフォームリポジトリのローカルコピーの状態を見てみましょう。最後のコミットがアップストリームリポジトリでまだ設定されていないことを思い出してください。







 bash-4.4$ bash-4.4$ git log -4 --graph * commit abaa2c5edd49dd0cf395c99877b4711d0170af37 (HEAD -> master) | Author: user <___@_______> | Date: Thu Nov 1 21:48:40 2018 +0300 | | build-system is updated to version 1.0.2 from platform side | * commit ea52eabd5910159efabd80adcf522f22bf6a2af2 (origin/master) |\ Merge: 442c9e9 e5c5446 | | Author: user <___@_______> | | Date: Thu Nov 1 20:48:05 2018 +0300 | | | | Pull changes from master of upstream build-system.git repository. | | | | Merge commit 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65' | | | * commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 | | Author: user <___@_______> | | Date: Thu Nov 1 20:26:52 2018 +0300 | | | | update build-system version to 1.0.1 | | * | commit 442c9e94c9890032fb2f3123661345d465e2849f | | Author: user <___@_______> | | Date: Thu Nov 1 20:41:40 2018 +0300 | | | | update platform version to 1.0.1 bash-4.4$
      
      





メインプロジェクトのアップストリームリポジトリに変更配信する正しい方法は、すべてのサブツリーの変更がメインリポジトリに直接送られるのではなく、サブツリーのアップストリームリポジトリから行われ、 git-subtree-pullコマンドを使用してそれらを受け取るようにすることです。 次に、アクションの意味を説明し、その後のトラブルを回避するために、最後のコミット( abaa2c5edd49dd0cf395c99877b4711d0170af37 )をプラットフォームリポジトリのローカルコピーに戻します。







 bash-4.4$ bash-4.4$ git reset --hard HEAD^ HEAD is now at ea52eab Pull changes from master of upstream build-system.git repository. bash-4.4$
      
      





次に、元のリモート/ build-system.gitアップストリームリポジトリから同じコミットを「削除」します。 しかし、最初に、最後のコミットabaa2c5edd49dd0cf395c99877b4711d0170af37を削除したことを確認してください







 bash-4.4$ bash-4.4$ git log -3 --graph * commit ea52eabd5910159efabd80adcf522f22bf6a2af2 (HEAD -> master, origin/master) |\ Merge: 442c9e9 e5c5446 | | Author: user <___@_______> | | Date: Thu Nov 1 20:48:05 2018 +0300 | | | | Pull changes from master of upstream build-system.git repository. | | | | Merge commit 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65' | | | * commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 | | Author: user <___@_______> | | Date: Thu Nov 1 20:26:52 2018 +0300 | | | | update build-system version to 1.0.1 | | * | commit 442c9e94c9890032fb2f3123661345d465e2849f | | Author: user <___@_______> | | Date: Thu Nov 1 20:41:40 2018 +0300 | | | | update platform version to 1.0.1 bash-4.4$
      
      





はい、以前の状態ea52eabd5910159efabd80adcf522f22bf6a2af2に実際に戻り、元のremote / build-system.gitリポジトリに最近送信した変更を取り戻すことができます 。 これを行うには、通常どおり、 git-subtree-pullコマンドを実行する必要があります。







 bash-4.4$ bash-4.4$ git subtree pull --prefix=build-system ../../remote/build-system.git/ master From ../../remote/build-system * branch master -> FETCH_HEAD hint: Waiting for your editor to close the file...
      
      





次に、コミットメッセージを編集するように求められます。







マージコミット '0673142942ccf53514a276e855a98514952bb713'



#コミットメッセージを入力して、このマージが必要な理由を説明してください。

#特に、更新されたアップストリームをトピックブランチにマージする場合。



#「#」で始まる行は無視され、空のメッセージは中止されます

#コミット。



これに置き換えます:







オリジンのマスターリモート/ビルドシステムリポジトリから変更をプルします。



マージコミット '0673142942ccf53514a276e855a98514952bb713'



そして最後に、前の結論の続きとして、次のものを取得します。







 Merge made by the 'recursive' strategy. build-system/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$
      
      





これで通常の履歴が得られ、さらに重要なこととして、プロジェクト開発の将来の段階で、 remote / build-system.gitからの変更の重要なマージを回避しました。 これは、ローカルプラットフォームリポジトリのビルドシステムサブツリーに変更を残さず、元のremote / build-system.gitリポジトリを介してそれらを転送することで変更を受信したために発生しました







 bash-4.4$ bash-4.4$ git log --graph * commit 04a13bac91d1c445994ffc19db8b479d5e644e17 (HEAD -> master) |\ Merge: ea52eab 0673142 | | Author: user <___@_______> | | Date: Thu Nov 1 21:59:45 2018 +0300 | | | | Pull changes from master of origin remote/build-system repository. | | | | Merge commit '0673142942ccf53514a276e855a98514952bb713' | | | * commit 0673142942ccf53514a276e855a98514952bb713 | | Author: user <___@_______> | | Date: Thu Nov 1 21:48:40 2018 +0300 | | | | build-system is updated to version 1.0.2 from platform side | | * | commit ea52eabd5910159efabd80adcf522f22bf6a2af2 (origin/master) |\ \ Merge: 442c9e9 e5c5446 | |/ Author: user <___@_______> | | Date: Thu Nov 1 20:48:05 2018 +0300 | | | | Pull changes from master of upstream build-system.git repository. | | | | Merge commit 'e5c5446967599065dc02a269d8fcfc2c1d3c4f65' | | | * commit e5c5446967599065dc02a269d8fcfc2c1d3c4f65 | | Author: user <___@_______> | | Date: Thu Nov 1 20:26:52 2018 +0300 | | | | update build-system version to 1.0.1 | | * | commit 442c9e94c9890032fb2f3123661345d465e2849f | | Author: user <___@_______> | | Date: Thu Nov 1 20:41:40 2018 +0300 | | | | update platform version to 1.0.1 | | * | commit 47905bcb80be6f7cb3030513986fad4df548f812 |\ \ Merge: 7fad4be 783c6d5 | |/ Author: user <___@_______> | | Date: Thu Nov 1 20:20:20 2018 +0300 | | | | Add 'build-system/' from commit '783c6d5af1100e9665f930c818c861ff011bed19' | | | | git-subtree-dir: build-system | | git-subtree-mainline: 7fad4becbd13258216fb95cbe9d987dd33f0be6d | | git-subtree-split: 783c6d5af1100e9665f930c818c861ff011bed19 | | git-subtree-repo: ../../remote/build-system.git/ | | git-subtree-ref: master | | | * commit 783c6d5af1100e9665f930c818c861ff011bed19 | Author: user <___@_______> | Date: Thu Nov 1 20:16:33 2018 +0300 | | init build-system master 1.0.0 | * commit 7fad4becbd13258216fb95cbe9d987dd33f0be6d Author: user <___@_______> Date: Thu Nov 1 20:16:33 2018 +0300 init platform master 1.0.0 bash-4.4$
      
      





, , upstream- remote/platform.git .







 bash-4.4$ bash-4.4$ git status On branch master Your branch is ahead of 'origin/master' by 2 commits. (use "git push" to publish your local commits) nothing to commit, working tree clean bash-4.4$ bash-4.4$ git push Enumerating objects: 9, done. Counting objects: 100% (8/8), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 600 bytes | 600.00 KiB/s, done. Total 5 (delta 0), reused 0 (delta 0) To ../../remote/platform.git ea52eab..04a13ba master -> master bash-4.4$
      
      





, git-subtree-pull , . , git-push(1) , , , .







, upstream- remote/platform.git 04a13bac91d1c445994ffc19db8b479d5e644e17 , remote/build-system.git , , git-subtree-pull , upstream- remote/platform.git , upstream- remote/platform.git (owner/platform).









git-format-patch



, , git-subtre ,

:







  git log -- . ":(exclude)build-system" git log -- build-system
      
      





, , .







git-format-patch .







, , patch- ea52eabd5910159efabd80adcf522f22bf6a2af2 , git-format-patch :







 bash-4.4$ bash-4.4$ git format-patch ea52eabd5910159efabd80adcf522f22bf6a2af2 --stdout From 0673142942ccf53514a276e855a98514952bb713 Mon Sep 17 00:00:00 2001 From: user <___@_______> Date: Thu, 1 Nov 2018 21:48:40 +0300 Subject: [PATCH] build-system is updated to version 1.0.2 from platform side --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 629b3f4..4fbbbaf 100644 --- a/README +++ b/README @@ -1,3 +1,3 @@ -[master] build-system 1.0.1 +[master] build-system 1.0.2 -- 2.19.1 bash-4.4$
      
      





, build-system/README build-system/, :







 --- a/README +++ b/README
      
      





,

git-diff :







 bash-4.4$ bash-4.4$ git diff ea52eabd5910159efabd80adcf522f22bf6a2af2 04a13bac91d1c445994ffc19db8b479d5e644e17 diff --git a/build-system/README b/build-system/README index 629b3f4..4fbbbaf 100644 --- a/build-system/README +++ b/build-system/README @@ -1,3 +1,3 @@ -[master] build-system 1.0.1 +[master] build-system 1.0.2 bash-4.4$
      
      





patch-:







 --- a/build-system/README +++ b/build-system/README
      
      





git-diff(1) , , , platform .











CM- , . , , :









, .







, , upstream- remote/build-system.git :







 bash-4.4$ bash-4.4$ cd owner/build-system/ bash-4.4$ cat README [master] build-system 1.0.2 bash-4.4$
      
      





, upstream- remote/build-system.git , , , minor 1.0.2 . build-system-1.1.x , , : 1.1.0 , 1.1.1 , 1.1.2 , .







:







 bash-4.4$ bash-4.4$ git checkout -b build-system-1.1.x Switched to a new branch 'build-system-1.1.x' bash-4.4$ git branch * build-system-1.1.x master bash-4.4$
      
      





, README 1.1.0 :







 bash-4.4$ bash-4.4$ vim README bash-4.4$ cat README [master] build-system 1.1.0 bash-4.4$ bash-4.4$ git commit -a -m "Move on to developing 1.1.x functionality" [build-system-1.1.x f6d79c1] Move on to developing 1.1.x functionality 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$
      
      





upstream- remote/build-system.git :







 bash-4.4$ bash-4.4$ git push --set-upstream origin build-system-1.1.x Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ../../remote/build-system.git * [new branch] build-system-1.1.x -> build-system-1.1.x Branch 'build-system-1.1.x' set up to track remote branch 'build-system-1.1.x' from 'origin'. bash-4.4$
      
      





, , , 1.1.1 :







 bash-4.4$ bash-4.4$ vim README bash-4.4$ cat README [master] build-system 1.1.1 bash-4.4$ bash-4.4$ git commit -a -m "Update build-system version to 1.1.1" [build-system-1.1.x f9544a4] Update build-system version to 1.1.1 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$ bash-4.4$ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 276 bytes | 276.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ../../remote/build-system.git f6d79c1..f9544a4 build-system-1.1.x -> build-system-1.1.x bash-4.4$
      
      





:







 bash-4.4$ bash-4.4$ git tag -a 1.1.1 -m "Created tag for release (version 1.1.1)" bash-4.4$ git push origin 1.1.1 Enumerating objects: 1, done. Counting objects: 100% (1/1), done. Writing objects: 100% (1/1), 170 bytes | 170.00 KiB/s, done. Total 1 (delta 0), reused 0 (delta 0) To ../../remote/build-system.git * [new tag] 1.1.1 -> 1.1.1 bash-4.4$
      
      





upstream- remote/build-system.git :







 bash-4.4$ bash-4.4$ cd remote/build-system.git/ bash-4.4$ tree refs refs ├── heads │  ├── build-system-1.1.x │  └── master └── tags └── 1.1.1 2 directories, 3 files bash-4.4$
      
      





, platform build-system . , , , , platform-1.0.2 :







 bash-4.4$ bash-4.4$ cd user/platform/ bash-4.4$ git branch * master bash-4.4$ git pull Already up to date. bash-4.4$ bash-4.4$ git checkout -b platform-1.0.2 Switched to a new branch 'platform-1.0.2' bash-4.4$ vim README bash-4.4$ cat README [master] platform 1.0.2 bash-4.4$ git commit -a -m "reated platform-1.0.2 branch for the transition to the system 1.1.1" [platform-1.0.2 00a1250] reated platform-1.0.2 branch for the transition to the system 1.1.1 1 file changed, 1 insertion(+), 1 deletion(-) bash-4.4$
      
      





, , - remote/build-system.git , 1.1.1 :







 bash-4.4$ bash-4.4$ git rm -rf build-system/ rm 'build-system/README' bash-4.4$ git commit -a -m "Removed subtre based on build-system/master" [platform-1.0.2 7db0f54] Removed subtre based on build-system/master 1 file changed, 3 deletions(-) delete mode 100644 build-system/README bash-4.4$ bash-4.4$ bash-4.4$ git push --set-upstream origin platform-1.0.2 Enumerating objects: 7, done. Counting objects: 100% (7/7), done. Delta compression using up to 4 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 550 bytes | 550.00 KiB/s, done. Total 5 (delta 0), reused 0 (delta 0) To ../../remote/platform.git/ * [new branch] platform-1.0.2 -> platform-1.0.2 Branch 'platform-1.0.2' set up to track remote branch 'platform-1.0.2' from 'origin'. bash-4.4$ bash-4.4$ bash-4.4$ git subtree add --prefix=build-system ../../remote/build-system.git/ 1.1.1 git fetch ../../remote/build-system.git/ 1.1.1 remote: Enumerating objects: 9, done. remote: Counting objects: 100% (9/9), done. remote: Compressing objects: 100% (3/3), done. remote: Total 7 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (7/7), done. From ../../remote/build-system * tag 1.1.1 -> FETCH_HEAD Added dir 'build-system' bash-4.4$
      
      





build-system upstream- remote/platform.git :







 bash-4.4$ bash-4.4$ git push Enumerating objects: 12, done. Counting objects: 100% (12/12), done. Delta compression using up to 4 threads Compressing objects: 100% (4/4), done. Writing objects: 100% (8/8), 889 bytes | 889.00 KiB/s, done. Total 8 (delta 0), reused 0 (delta 0) To ../../remote/platform.git/ 7db0f54..6f1a50e platform-1.0.2 -> platform-1.0.2 bash-4.4$
      
      





:







 bash-4.4$ bash-4.4$ git log -3 --graph * commit 6f1a50e249e01f69c54f343b65747d28abc6456d (HEAD -> platform-1.0.2, origin/platform-1.0.2) |\ Merge: 7db0f54 f9544a4 | | Author: user <___@_______> | | Date: Fri Nov 2 18:24:54 2018 +0300 | | | | Add 'build-system/' from commit 'f045926542e9f685034545a45317093383fddf99' | | | | git-subtree-dir: build-system | | git-subtree-mainline: 7db0f5452e67086dc4e381a0ccb14f25d48ecf0b | | git-subtree-split: f045926542e9f685034545a45317093383fddf99 | | git-subtree-repo: ../../remote/build-system.git/ | | git-subtree-ref: 1.1.1 | | | * commit f9544a4cc2650a83b96f400fdfc95ba64a38ec6e | | Author: user <___@_______> | | Date: Fri Nov 2 17:59:43 2018 +0300 | | | | Update build-system version to 1.1.1 | | | * commit f6d79c12ada29438454739fe6f6db9592d413be2 | | Author: user <___@_______> | | Date: Fri Nov 2 17:54:35 2018 +0300 | | | | Move on to developing 1.1.x functionality bash-4.4$
      
      





, CM- , platform , platform-1.0.2 build-system . , , build-system , .







, upstream- build-system platform , pre-receive







  remote/build-system.git/hooks/pre-receive
      
      





, , :







 #!/bin/sh zero_commit="0000000000000000000000000000000000000000" LC_COLLATE='C' allowed_users=(habr habrahabr) while read oldrev newrev refname; do # # git-subtree(1) push       , #    .      # : # # 1)       ,   ,  # 2)         tag,    #       ,  , , #  'refs/tags/1.1.1',  '1.1.1',  git-subtree(1) #       'refs/heads/1.1.1', #     . # : if [[ $oldrev == $zero_commit && $refname =~ ^refs/heads/ ]]; then refbase=$(basename $refname) refpath=$(git show-ref $refbase | cut -f2 -d' ') if [[ $refpath =~ ^refs/tags/.*$ ]]; then echo "" echo "ERROR: Trying to change TAG named as '$refpath'." echo "" exit 1 fi if [[ ! ${allowed_users[*]} =~ $USER ]]; then echo "" echo "ERROR: Trying to create NEW BRANCH with name '$refname'." echo "" exit 1 fi fi done exit 0
      
      





. , , , , , , . , , :







  git subtree push --prefix=<subdir> <remote> <ref>
      
      





<ref> , <subdir> , , (refs/tags/1.1.1), (1.1.1) upstream- ( : refs/heads/1.1.1).







, git-subtree(1) . .







, pre-receive , user/platform/build-system/README:







 bash-4.4$ bash-4.4$ cd user/platform/ bash-4.4$ vim build-system/README bash-4.4$ cat build-system/README [master] build-system 1.1.1 Try to change. bash-4.4$ bash-4.4$ git commit -a -m "Try to change the tag of build-system" [platform-1.0.2 34e7970] Try to change the tag of build-system 1 file changed, 2 insertions(+) bash-4.4$
      
      





upstream- remote/build-system.git .







...

アップストリームリポジトリのリビジョンへのリンクは、コマンドの必須パラメーターです







  git subtree push --prefix=<subdir> <remote> <ref>
      
      





したがって、サブツリーをどのように接続したかを思い出すために、次のコマンドを使用してリンクの名前を明確にする必要があります。







 bash-4.4$ git subtree -d --list Looking for externals... Commit: 6f1a50e249e01f69c54f343b65747d28abc6456d build-system ../../remote/build-system.git/ tag 1.1.1 f045926542e9f685034545a45317093383fddf99 bash-4.4$
      
      





そのため、タグ名を覚えて、最終的にアップストリームのremote / build-system.gitリポジトリに変更を配信できます











 bash-4.4$ bash-4.4$ git subtree push --prefix=build-system ../../remote/build-system.git/ 1.1.1 git push using: ../../remote/build-system.git/ 1.1.1 Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Writing objects: 100% (3/3), 293 bytes | 293.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: remote: ERROR: Trying to change TAG named as 'refs/tags/1.1.1'. remote: To ../../remote/build-system.git/ ! [remote rejected] c3a7333aaa818a7d7a0d501d4b69db1c6a01d40f -> 1.1.1 (pre-receive hook declined) error: failed to push some refs to '../../remote/build-system.git/' bash-4.4$
      
      





, , pre-receive , . :







 remote: remote: ERROR: Trying to change TAG named as 'refs/tags/1.1.1'. remote:
      
      





, , , , :







 bash-4.4$ bash-4.4$ git reset --hard HEAD^ HEAD is now at 6f1a50e Add 'build-system/' from commit 'f045926542e9f685034545a45317093383fddf99' bash-4.4$
      
      





, , platform-1.0.2 :







 bash-4.4$ bash-4.4$ git log -3 --graph * commit 6f1a50e249e01f69c54f343b65747d28abc6456d (HEAD -> platform-1.0.2, origin/platform-1.0.2) |\ Merge: 7db0f54 f9544a4 | | Author: user <___@_______> | | Date: Fri Nov 2 18:24:54 2018 +0300 | | | | Add 'build-system/' from commit 'f045926542e9f685034545a45317093383fddf99' | | | | git-subtree-dir: build-system | | git-subtree-mainline: 7db0f5452e67086dc4e381a0ccb14f25d48ecf0b | | git-subtree-split: f045926542e9f685034545a45317093383fddf99 | | git-subtree-repo: ../../remote/build-system.git/ | | git-subtree-ref: 1.1.1 | | | * commit f9544a4cc2650a83b96f400fdfc95ba64a38ec6e | | Author: user <___@_______> | | Date: Fri Nov 2 17:59:43 2018 +0300 | | | | Update build-system version to 1.1.1 | | | * commit f6d79c12ada29438454739fe6f6db9592d413be2 | | Author: user <___@_______> | | Date: Fri Nov 2 17:54:35 2018 +0300 | | | | Move on to developing 1.1.x functionality bash-4.4$
      
      









git-subrepo , , squashed-, git-subtree(1) , .







, . git-subrepo . , git-subtree , , Git , , , Git .









文学:






All Articles