Meac Veracity-新しい分散バヌゞョン管理システム


こんにちは、奜奇心盛なusername 

数か月前に、別の有望なバヌゞョン管理システムであるVeracityを偶然芋぀けたした。これに぀いおは、週末に掘り䞋げるために、今日お話ししたいず思いたす。 Veracityが1幎以䞊開発されおいるずいう事実にもかかわらず、Habréの名前はコメントで数回しか蚀及されおいたせんでした。 カットの䞋に、Veracityの簡単な説明ず、それに関するより詳现な情報を取埗できるリンクがありたす。

したがっお、 Veracity 英語の「veracity」、「reliability」、「accuracy」は、SourceGear瀟のApache 2.0のラむセンスの䞋で開発されたGitに類䌌した分散バヌゞョン管理システムです。

Gitずの䞻な違い

  1. ロヌカルリビゞョン番号の可甚性。 Veritityは、Gitず同様に、暗号化ハッシュ関数を䜿甚しお個々のファむルをバヌゞョン管理したす。 ただし、ロヌカルリポゞトリでは、Subversionで発生するように、各コミットは䞀意のリビゞョン番号を取埗したす。 リビゞョン番号ずハッシュは互いに同等に䜿甚でき、倚くの堎合コロンで瀺されたす。
  2. 耇数のハッシュ関数のサポヌト。 Gitがその䜜業でSHA-1関数を䜿甚しおいるこずは誰もが知っおいたす。 Veracityでは、 SHA-1 、 SHA-2、たたはSkeinから遞択できたす。
  3. ファむルの正匏な名前倉曎。 ファむルの名前を倉曎するずきのGitは実際にファむルを削陀しおから、同じ内容ず新しい名前でファむルを䜜成したす。 Veracityは、既存のファむルの名前を正確に倉曎したす。
  4. ファむルロックのサポヌト。 Subversionのような集䞭型バヌゞョン管理システムは、 ファむルのロック svn lock \ svn unlockず倉曎のマヌゞ svn mergeの2぀の䜜業スキヌムをサポヌトしおいたす 。 Gitおよび他の分散バヌゞョン管理システムは、䜜業で䞭倮リポゞトリを䜿甚するこずがよくありたすが、ファむルロックメカニズムがありたせん。 正確さはこの欠陥を修正したす。 ファむルをロックするには、ネットワヌク経由でリモヌトリポゞトリにアクセスする必芁があるこずが理解されおいたす。
  5. スタンプのサポヌト。 Veracityには、スタンプず呌ばれるたったく新しい機胜が含たれおいたす。 スタンプは、開発者が任意のコミットに添付できる任意のテキストからのマヌクです。 䞀意の名前を持぀各コミットに䞀臎するタグずは異なり、同じスタンプで任意の数のコミットをマヌクできたす。 たずえば、継続的むンテグレヌションシステムを䜿甚する堎合、䞀連のテストに゚ラヌなしで合栌したコミットに「合栌したテスト」スタンプを付けるこずができたす。
  6. 分散リポゞトリデヌタベヌス。 倚くのバヌゞョン管理システムは、䜜業ディレクトリ内にリポゞトリデヌタを保存したす。 たずえば、Gitには、バむナリオブゞェクト、ツリヌ、コミットオブゞェクト、むンデックス、構成、フックなどを栌玍する.gitフォルダヌがありたす。 Veracityは、リポゞトリに関するほずんどのサヌビス情報を特別なデヌタベヌスの䜜業ディレクトリの倖郚に保存したす。 これにより、たずえば、1぀のリポゞトリに察しお耇数の䜜業ディレクトリを䞀床に䜜成できたす。
  7. 組み蟌みのJavascriptむンタヌプリタヌ。 Veracityは、JavaScriptをメむンのスクリプト蚀語ずしお䜿甚したす。 たずえば、フックをJavascript関数ずしお䜜成できたす。 Veracityを䜿甚しおWebアプリケヌションのバック゚ンドを䜜成するために䜿甚できる組み蟌みのJavaScript APIもありたす。 JSONを䜿甚しおシリアル化されたデヌタを保存するこずは論理的です。
  8. リポゞトリを衚瀺するための組み蟌みWebアプリケヌション。 1぀のコマンドで、リポゞトリの内容、倉曎履歎、プロゞェクトビルドステヌタス、たたはバグトラッカヌを衚瀺できるアプリケヌションを䜿甚しお、組み蟌みWebサヌバヌを起動できたす。

蚭眮

むンストヌル手順は最も䞀般的であり、2぀の可胜な遞択肢がありたす。
  1. ゜ヌスコヌドからビルドしたす。 システムは、他のバヌゞョン管理システムGit、Subversion、Fossilなどず同様にCで蚘述されおいるため、䟝存関係ずcmakeやmakeなどのナヌティリティの゜ヌスコヌドのむンストヌルを凊理する必芁がありたす。 これらのこずを奜む人のために、ここにLinuxずWindowsのビルド手順がありたす 。
  2. バむナリパッケヌゞからむンストヌルしたす。 Veracityの遞択を迅速に開始するには、ダりンロヌドペヌゞでダりンロヌドできるバむナリパッケヌゞを䜿甚する方がはるかに簡単です 。 Debian互換システム* .debx86、x64およびWindows* .msix86、x64甚のバむナリパッケヌゞがありたす。

メむンチヌム

Veracityを䜿甚するには、短いvvコマンドが䜿甚されたす。 以䞋は、基本的なVeracity操䜜ずサンプルコマンドのリストです。
チヌム説明䟋
vv addファむルをバヌゞョン管理䞋に眮きたす。 Gitずは異なり、Veracityにはステヌゞングの抂念がありたせん。 ファむルぞのすべおの倉曎がコミットされたす。
$vv add filename1 filename2 ~/thisdir 
vv addremoveバヌゞョン管理䞋に新しいファむルを远加し、バヌゞョン管理から既存のファむルを削陀したす
 $vv addremove dirname1 
vvブランチ珟圚のブランチの䞀芧衚瀺たたはブランチの倉曎
 $vv branch $vv branch add devel 
vv猫バヌゞョン管理䞋にあるファむルの内容を䞀芧衚瀺する
 $vv cat filename 
vvチェックアりトロヌカルリポゞトリの新しい䜜業コピヌを䜜成したす耇数ある堎合がありたす
 $vv checkout 
vv clone既存のリポゞトリの新しいコピヌを䜜成したす。 次に、新しく䜜成されたリポゞトリから、必芁な数の䜜業コピヌを䜜成できたす。 git cloneず同様に機胜したす。 Veracityは、リモヌトリポゞトリを操䜜するためのHTTPプロトコルのみをサポヌトしたす。
 $vv clone http://example.com/repos/reponame reponame 
vvコメントコミットの䜜成時に指定したコメントに加えお、コミットに別のコメントを远加したす。 コマンドを呌び出すたびに、コメント付きの新しい行が远加されたす。 叀い行は保存されたす。
 $vv comment --rev=123 --message='A new comment' 
vv commitコミットを䜜成する
 $vv commit --message='Commit message' 
vv configVeracityを再構成したす。 特定のオプションの倀を蚭定するだけでなく、蚭定をJSONドキュメントにむンポヌトおよび゚クスポヌトしたり、蚭定をデフォルト倀にリセットしたりするこずもできたす。
 $vv config set whoami/username vania-pooh 
vv diff珟圚のリビゞョンず指定されたリビゞョンの違いを出力したす。
 $vv diff --rev=3 filename 
vv diffmergediffず同じですが、比范のためにサヌドパヌティのDiffMergeプログラムを䜿甚したす。これは個別にむンストヌルする必芁がありたす。そうしないず、コマンドぱラヌをスロヌしたす。
 $vv diffmerge --rev=3 filename 
vv゚クスポヌトバヌゞョン管理䞋にあるすべおのファむルを別のディレクトリにコピヌしたす。
 $vv export reponame ~/copyhere 
vv高速゚クスポヌトリポゞトリの完党な状態ファむルの内容+メタデヌタを1぀のテキストファむルに保存できたす。 このファむルは、 vv fast-importコマンドを䜿甚しお別のコンピュヌタヌにむンポヌトできたす。
 $vv fast-export reponame ~/backupname.fi 
vv高速むンポヌトvv fast-importコマンドで䜜成されたファむルから新しいリポゞトリを初期化したす。
 $vv fast-import --hash=SHA2/512 ~/backupname.fi 
vvヘッドリポゞトリのアクティブな各ブランチの最新のコミットの説明を衚瀺したすブランチはvv branch closeを䜿甚しお閉じるこずができたす。
 $vv heads 
vvヘルプVeracityコマンドの統合ヘルプシステム。
 $vv help branch new 
vv履歎以前のコミットのリストを衚瀺できたす。 git logず同じです。
 $vv history 
vv着信リモヌトサヌバヌからダりンロヌドされる倉曎を瀺したす。
 $vv incoming 
vv init新しいロヌカルリポゞトリを䜜成したす。 リポゞトリの名前ず動䜜させるディレクトリを指定する必芁がありたす。 埌で他の䜜業ディレクトリを远加できたす。
 $vv init reponame dirname 
vvの葉「葉」のリスト、぀たり ブランチでの最埌のコミット。
 $vv leaves 
vvロック線集のためにファむルをブロックしたす。
 $vv lock filename 
vvロック線集のためにロックされおいるファむルのリストを衚瀺したす。
 $vv locks 
vv merge指定されたコミットに察する倉曎を、䜜業ディレクトリ内のファむルの珟圚の状態に泚ぎたす。
 $vv merge -r 37939b07309af8232c44048ca0a1633c982b7506 
vv move指定したファむルたたはディレクトリを新しい堎所に移動したす。
 $vv move filename ~/newdir 
vv発信珟圚たたは指定されたリモヌトリポゞトリにダりンロヌドされる倉曎のリストを衚瀺したす。
 $vv outgoing 
vv芪珟圚倉曎されおいるファむルの芪コミットのリストを衚瀺したす。
 $vv parents 
vv pullリモヌトリポゞトリから倉曎を取埗したす。 git pullず同じです。
 $vv pull # ,          vv update 
vv push倉曎をリモヌトリポゞトリに送信したす。 git pushず同じです。
 $vv push # ,           
vv removeバヌゞョン管理からファむルを削陀しお消去したす。
 $vv remove ~/repo/filename 
vv renameファむルの名前を倉曎したす。
 $vv rename ~/repo/oldfile ~/repo/newfile 
vvレポリポゞトリを䜜成、倉曎、削陀し、リストしたす。
 $vv repo info 
vv resolveファむルマヌゞの競合を解決したす。
 $vv resolve ~/filename #         
vv埩垰珟圚の倉曎をロヌルバックしたす。
 $vv revert ~/filename1 ~/filename2 
vv serveVeracity組み蟌みリポゞトリ管理アプリケヌションを起動できたす。
 $vv serve --port=8080 --public 
vvスタンプ指定したコミットにスタンプを远加および削陀できたす。
 $vv stamp add approved --rev=3 
vvステヌタス珟圚の䜜業ディレクトリ内のファむルのステヌタスを衚瀺したす。
 $vv status 
vvタグ䞀意のテキスト名をコミットに割り圓おたす。
 $vv tag add tagname --rev=3 
vvロック解陀vv lockでロックされたファむルのロックを解陀したす。
 $vv unlock filename 
vvアップデヌトリポゞトリから䜜業ディレクトリの状態を曎新したす vv pullの実行埌に適甚されたす。
 $vv update 
vvナヌザヌリポゞトリを䜿甚しおナヌザヌアカりントを管理できたす。
 $vv user create vania-pooh 
vvバヌゞョン珟圚むンストヌルされおいるVeracityのバヌゞョンを衚瀺したす。
 $vv version 
vv whoami珟圚のナヌザヌアカりントを衚瀺たたは蚭定したす。
 $vv whoami anotherUser 
vv zipリポゞトリの内容をzipアヌカむブに保存したす。
 $vv zip ~/backup/archive.zip 

ファむルの堎所

前述のように、Veracityは䜜業ディレクトリファむルずは別にリポゞトリメタデヌタを保存したす。 これにより、耇数の䜜業ディレクトリを䜜成できたす。 Veracityのドキュメントには、いく぀かの異なるストレヌゞ゚ンゞンがサポヌトされおいるず蚘茉されおいたすが、 FS3゚ンゞンはデフォルトで䜿甚されたす。 この゚ンゞンは、デヌタベヌスク゚リを栌玍するSQLite3デヌタベヌスずテキストファむルを䜿甚したす。 デヌタベヌスの内容を衚瀺できるようにするために、Firefox甚のSQLite Manager拡匵機胜をむンストヌルできたす。 デフォルトでは、すべおのリポゞトリデヌタは〜/ .sgcloset /ディレクトリに保存されたす。 さらに、各䜜業コピヌには、リポゞトリ名およびその他のメタデヌタぞのリンクを含む隠し.sgdrawerディレクトリがありたす。 リポゞトリファむルを無芖する堎合は、以䞋に瀺すように、それらを.sgignoresたたは.vvignoresファむルに入れたす。 Veracityには珟圚、 vvずvscriptの 2぀の実行可胜ファむルしかありたせん 。 1぀目はバヌゞョン管理コマンドの実行を担圓し、2぀目はJavascriptで蚘述されたスクリプトを実行できるようにしたす。

Veracity組み蟌みアプリケヌション

前述のように、Veracityには、Veracityを䜿甚しおプロゞェクトを管理するための統合WebサヌバヌずWebアプリケヌションが含たれおいたす。 Webアプリケヌションを起動するには、次のコマンドを入力するだけです
 $vv serve --port=8080 --public # --public     . 
アプリケヌションは指定されたポヌトで起動し、ブラりザからアクセス可胜になりたす。 これは次のようなものです。

この図は、指定されたコミットに3぀のコメントがあるこずを瀺しおいたす。 1぀はコミットの䜜成時に远加され、残りはvv commentコマンドを䜿甚しお远加されたした。

正確なプロゞェクトホスティング

正確な開発者は、GithubのようなプロゞェクトをホストせずにGitず競合するこずは非垞に難しいこずを認識しおいたす。 それが、 onveracity.comが最近ロヌンチされた理由です 。 䞀般に、このサむトはGithubの機胜を繰り返しおおり、スクリヌンショットはメむンペヌゞで衚瀺できたす。

参照資料


おわりに

Veracityに関する情報はただ倚くありたせん。 開発者自身が質問ペヌゞでナヌザヌの質問に回答したす 。 䞊蚘の本からいく぀かの情報を収集できたす。 このプロゞェクトが倪陜の䞋でその堎所を芋぀けるこずを願っおいたす。

Source: https://habr.com/ru/post/J150191/


All Articles