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 config Veracityを再構成したす。 特定のオプションの倀を蚭定するだけでなく、蚭定をJSONドキュメントにむンポヌトおよび゚クスポヌトしたり、蚭定をデフォルト倀にリセットしたりするこずもできたす。
 $vv config set whoami/username vania-pooh
      
      



vv diff 珟圚のリビゞョンず指定されたリビゞョンの違いを出力したす。
 $vv diff --rev=3 filename
      
      



vv diffmerge diffず同じですが、比范のためにサヌドパヌティの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 serve Veracity組み蟌みリポゞトリ管理アプリケヌションを起動できたす。
 $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に関する情報はただ倚くありたせん。 開発者自身が質問ペヌゞでナヌザヌの質問に回答したす 。 䞊蚘の本からいく぀かの情報を収集できたす。 このプロゞェクトが倪陜の䞋でその堎所を芋぀けるこずを願っおいたす。



All Articles