バヌゞョン管理システム。 ゚ンゞニア、アヌティスト、䜜家向けのマニュアル

こんにちは、Habr。 私は倚くの蚘事、より具䜓的には-バヌゞョン管理システム以䞋、ハヌドカレンシヌず呌ぶの非暙準぀たり非オリゞナルの䜿甚を倚くの方法で説明するトピックに觊れるこずにしたした。 この蚘事はあなたのためではないので、同志のプログラマヌ、腐ったトマトを隠しお通り抜けたしょう。 はい、皆さんは既にGit、SVN、CVSのすべおの耇雑さを研究しおおり、他の倚くの流行語を知っおいたす。 単なる人間である私たちに、SLEを䜿甚するすべおの利点を孊ばせおください。

ハヌド通貚に粟通したいすべおの人ず、急速に倉化するデヌタに䜕らかの方法で察凊しおいるすべおの人を招埅したす。



なぜそれが必芁ですか



私自身は工科倧孊の孊生であり、ほが垞にドキュメントテキスト、図面、図面を操䜜し、1日に3回10、100倉曎しおいたす。 先週行われた線集をキャンセルしお、1週間前の状態のドキュメントに戻す必芁があるこずが刀明する堎合がありたす。 さお、少しの線集が行われた堎合、この堎合、Ctrl + Zで50回のヒットが圹立ちたす。 ただし、今週䞭にドキュメントの䜜業が倚かれ少なかれ行われた堎合、「1週間前に行われた重芁なリビゞョンに」ステヌタスを埩元できたせん。 これを行うには、「重芁なリビゞョンの前」の時点でのドキュメントのコピヌず、「別の重芁なリビゞョンぞ」、「疑わしいリビゞョンぞ」、「キャンセルする必芁がありそうな」リビゞョンぞのコピヌがさらに12個必芁です。 原則ずしお、このアプロヌチは可胜であり、倚くの人によっお実践されおいたす。 最近たで、私自身が重芁なバヌゞョンのファむルを保持し、「date_time」ずいうプレフィックスを付けお保存しおいたしたが、喜んでいたようです。 この方法の利点は単玔さであり、欠点は䜜業フォルダヌの「膚匵」ず䜿甚の䞍䟿さです。 そしお、もしそれらのうちの最初のものが䜕らかの圢で戊うこずができるなら倧きなハヌドドラむブず7zipを䜿っお、䞍䟿で䜕かをしなければなりたせんでした。



これでできるこず、たたはSLEずは



りィキペディアから段萜を切り取りたす。「バヌゞョン管理システム英語版のバヌゞョン管理システム、VCS、たたはリビゞョン管理システムからは、倉化する情報の凊理を容易にする゜フトりェアです。 バヌゞョン管理システムを䜿甚するず、同じドキュメントの耇数のバヌゞョンを保存し、必芁に応じお以前のバヌゞョンに戻っお、誰がい぀倉曎を加えたかを刀断できたす。 りィキペディア自䜓の原則のように芋えたす-すべおの線集を含む蚘事のすべおのバヌゞョンが孊習に利甚できたす。

したがっお、倚くのバヌゞョンのファむルを保存する必芁がある状況でハヌド通貚を䜿甚するこずが必芁です。 このアプロヌチの利点には、䜿いやすさず、いわゆるデルタ圧瞮による空きディスク容量の節玄が含たれたすファむルは異なるバヌゞョンで保存されず、バヌゞョンごずに倉曎されるため、保存されるデヌタ量が削枛されたす。 やっおみたしょう。



SLEずは



同じりィキペディアでは、SLEはロヌションの有無にかかわらず、倧小を問わず䞀元化および分散されおいるこずが瀺唆されおいたす。 ハヌドカレンシヌ機胜の䞀郚のみを少なくずも最初は䜿甚するため、これに特に関心はありたせん。 これがたさに機胜だず考えたす。

ほずんどすべおの硬貚は、䜕らかの皮類のストレヌゞを衚し、䜜業するファむルのすべおのバヌゞョンを保存したす。 ここでは、保存されおいるファむルのバヌゞョンがナヌザヌによっお最も頻繁に決定されるこずを明確にする必芁がありたす。 たずえば、玄12の小さな倉曎を行い、アクティビティの結果をリポゞトリに保存するずきだず刀断したした。 類掚は定期的にCtrl + Sを抌すこずで頭に浮かびたすが、唯䞀の違いは、このバヌゞョンのファむルに将来アクセスできるこずです。 圓然のこずながら、この方法で䞀気に倧量のファむルのバヌゞョンをストレヌゞに保存できたす。 このアクションは、単玔な方法で「コミット」たたは「倉曎のコミット」ず呌ばれたす。

い぀でも、リポゞトリに新しいファむルを远加したり、リポゞトリ内の既存のファむルを削陀したりできたすこれはストレヌゞのスマヌト名です。ハヌド通貚は、い぀/䜕を远加/削陀したかを「蚘憶」したす。 たた、commit'ahsのコメントのおかげで、この特定のコミットが実際に実行される理由を説明するこずもできたす「そこに安物の宝石を远加したした」/「そこから必芁な郚分を削陀した」。

1週間前のバヌゞョンに戻る時が来たこずをようやく理解するず、倉曎の党履歎がありたす。 そしお、ここで䜕をするかを遞択できたす。 叀いファむルから必芁な郚分をコピヌしお珟圚のバヌゞョンに貌り付ける必芁がある堎合は、ストレヌゞから叀いファむルを抜出し、必芁なファむルをそこからコピヌしたす。 完党にロヌルバックしお叀いバヌゞョンでの䜜業を続ける必芁がある堎合、SLEが再び支揎したす。以前のバヌゞョンに戻っお、いわゆる新しいブランチ「ブランチ」を䜜成できたす。 1週間前のバヌゞョン。 したがっお、プロゞェクトのバヌゞョン履歎は、「ルヌト」プロゞェクトの開始から「ブランチ」線集の成功および倱敗たで、ツリヌ圢匏でグラフィカルに衚すこずができたす。 さらに、たずえば、1぀の゜ヌスファむルから2぀の異なるバヌゞョンを開発するこずを決定した堎合など、「ブランチ」を人為的に䜜成するこずもできたす。 さらに、䜜業ファむルがテキストドキュメントおよびその他のドキュメントである堎合、異なるブランチを1぀に結合するこずができたす-いわゆるマヌゞ「マヌゞ」。 ここで、数人の人々がプロゞェクトに取り組んでおり、それぞれが独自の「安物の宝石」に埓事しおいるず想像しおください。 この堎合、共通のリポゞトリを䜿甚するず、開発が倧幅に簡玠化されたす。



理論から実践たで、たたはSLEの䜿甚を開始



ですから、SLEを䜿甚するこずは良いこずだず確信しおいただければ幞いです。 ハヌド通貚の䜿甚方法を孊ぶこずだけが残っおいたす。 これが私たちがやるこずです。

䜿甚のさたざたな面で互いに異なるさたざたなバヌゞョン管理システムがありたす。 私たちは少なくずも最初はさたざたなシステムの耇雑さに興味がないので、最も単玔で最も友奜的なシステムに぀いお説明したす。 私の謙虚な意芋では、奇劙なこずに、このようなシステムはMercurialです。TortoiseHgグラフィカルシェルを備えた「非垞に倧きなコヌドリポゞトリで効果的に動䜜するように蚭蚈されたクロスプラットフォヌム分散バヌゞョン管理システム」です。 システムの操䜜は、Windows、Linux、およびMac OS Xで可胜です。

Windowsのシステムでの䜜業を説明する予玄をすぐに行いたす。 Linuxを習埗したので、すべおを類掚するこずは難しくありたせん。

さらに、Mercurialリポゞトリbitbucket.orgの無料ホスティングの䜿甚方法に぀いおも孊習したす。これは、プロゞェクトだけで䜜業しおいない堎合に必芁なものであり、非垞に䟿利な堎合はむンタヌネット経由でプロゞェクトのすべおのバヌゞョンにアクセスしたい堎合に䜿甚したす 実際、これを䜿甚したこずがある堎合、これは䟿利なDropboxの代替品です。

開始するには、次の堎所からMercurial + TortoiseHgをむンストヌルしたすtortoisehg.bitbucket.org。

このシステムはコン゜ヌルで機胜するため、䟿宜䞊、埌で通垞の操䜜甚にいく぀かの* .batファむルを䜜成したす。

すべおの操䜜は、hgコマンドによっお実行されたす。 パラメヌタなしで呌び出されるず、基本的なコマンドのリストが衚瀺されたす。

遞択したディレクトリはリポゞトリずしお機胜し「C\ project \」フォルダを䜿甚したす、ここに将来のプロゞェクトのすべおのファむルを保存する必芁がありたす。 もちろん、同じコンピュヌタヌ䞊に耇数のリポゞトリヌを持぀こずを犁止する人はいたせん。

システムがリポゞトリを䜜成するこずを「理解」するために、次のコマンドを実行したす。

hg init c:\project





その埌、フォルダヌ「c\ project \」が䜜成されたす以前に䜜成されおいない堎合、フォルダヌ「c\ project \ .hg \」。Mercurialはすべおのサヌビス情報を保存したす。

コンピュヌタヌのロヌカルリポゞトリだけでなく、すべおの倉曎を送信するリモヌトリポゞトリも取埗するこずをすぐに思い出したすたたは、賢い人が蚀うように、英語の「プッシュ」からリモヌトリポゞトリに「プッシュ」倉曎。 これを行うには、bitbucket.orgにアクセスしお登録し、最初のリポゞトリを䜜成したすリポゞトリ-新しいリポゞトリの䜜成。 リポゞトリに名前を付け明確にするためにremote_projectず呌びたす、[リポゞトリの䜜成]をクリックしたす。

珟圚、2぀のリポゞトリがありたす。「c\ project \」フォルダヌにあるロヌカルリポゞトリず「bitbucket.org/your_account_name/remote_project/」にあるリモヌトリポゞトリです。your_account_nameはbitbucketで登録するずきに指定したリポゞトリ、remote_projectはリポゞトリの名前、䜜成時に遞択されたした。

調査を続行するには、ロヌカルリポゞトリに䜕かを眮く必芁がありたす。 その䞭に将来のプロゞェクトのファむルを䜜成するか私の堎合、「c\ project \」フォルダに、珟圚のプロゞェクトをそこにコピヌしたす。

厳密に蚀えば、Mercurialに次のように䌝える必芁がありたす。「そのようなファむルずいく぀かの新しいフォルダヌをプロゞェクトフォルダヌに远加したした。」これには「hg add」コマンドが提䟛されたす。 ただし、別のアプロヌチがより䟿利です-次のコミットで、Mercurialにプロゞェクトフォルダヌから新しく䜜成されたすべおのファむルを取埗し、削陀されたファむルを忘れるように指瀺したす。「新しいドキュメントを䜜成するたびにhg add c\ project \ new_document.doc」を実行するよりもはるかに簡単です」

それでは、最初のコミットに取り掛かりたしょう。 次のコマンドで実行されたす。

hg commit –A –m “comment to commit”





順番に芋おみたしょう。 このコマンドは、リポゞトリにいるずきに入力する必芁がありたす぀たり、最初に「cd c\ project」を実行する必芁がありたす。 「-A」オプションは、Mercurialが新たに䜜成されたファむルを「ピックアップ」するために必芁です䞊蚘参照。「-m」オプションを䜿甚するず、コミットにコメントを远加できたす。 これらのコメントは、TortoiseHgずbitbucket.orgのプロゞェクトペヌゞでバヌゞョンたたは倉曎セット-倉曎リストを衚瀺するずきに衚瀺されたす。 埌で苊しめられないように意味のあるコメントを䞎えるこずは非垞に重芁であり、これたたはその改蚂がい぀行われたかを芚えおいたす。

これでリポゞトリにプロゞェクトの初期バヌゞョンが保存されたした。 それ以降のすべおのコミットメントは、珟圚のバヌゞョンを保存するずきだず刀断した埌、同様に実行されたす。

次のコマンドを䜿甚しお、コミットをリモヌトリポゞトリに「プッシュ」できたす。

hg push https://bitbucket.org/__/remote_project





同時に、リポゞトリに察応するフォルダにもいる必芁がありたす。 コマンドを入力するず、bitbucket.orgのアカりントの名前ずパスワヌドが芁求されるため、プッシュするたびに入力しないように、コマンドを次のように眮き換えるこずができたす。

hg push hg push https://__:__@bitbucket.org/__/remote_project





すべおのコマンドを* .batファむルに倉換するため、この堎合、パスワヌドは平文で保存され、セキュリティ䞊のリスクが生じたすが、私にずっおはこれで問題ありたせん。

そのため、䟿宜䞊、次の内容のcommit.bat、push.batおよびcommitpush.batファむルを盎接到達ゟヌンに䜜成したす。

[commit.batファむルの内容]

IF !%1==! goto exit1

cd C:\project

hg commit -A -m "%*"

goto exit0

:exit1

echo "NO COMMAND-LINE ARG!"

:exit0






匕数付きで呌び出されたこのファむルは、コミットコメント内の匕数を䜿甚しおプロゞェクトコミットを実行したす。 䟋「commit.bat my first commit」を実行し、コメント「my first commit」でコミットを取埗したす。 FARでは、Ctrl + Enterの組み合わせを䜿甚するず䟿利です。

[push.batファむルの内容]

cd C:\project





hg push https://__:__@bitbucket.org/__/remote_project





このファむルはリモヌトリポゞトリにプッシュされたす。

[commitpush.batファむルの内容]

IF !%1==! goto exit1

cd C:\project

hg commit -A -m "%*"

goto exit0

:exit1

echo "NO COMMAND-LINE ARG!"

:exit0

call ./push.bat






匕数付きで呌び出されるこのファむルは、順次コミットを実行し、コミットするコメントに入力された匕数を䜿甚しおプロゞェクトをプッシュしたす。

さらに、小さな䞭間コミットの堎合、commit_date_time.batファむルを䜜成するこずをお勧めしたす。

[commit_date_time.batの内容]

cd C:\project

hg commit -A -m "%DATE% %TIME%"






このファむルは、珟圚の日付ず時刻をコメントずしおコミットしたす。これはしばしば䟿利です。

誰もが線集の匷床ず耇雑さに応じおcommit'ovずpush'eyの頻床を個別に決定したす。 「より頻繁に-より良い」ずいうルヌルに埓うこずをお勧めしたすが。

リポゞトリのファむル/フォルダヌを右クリックするず、リポゞトリ゚クスプロヌラヌTortoiseHg-リポゞトリ゚クスプロヌラヌを起動できたす。これにより、コミットのすべおにコメントが衚瀺されたす。 このりィンドりには、リポゞトリのツリヌ構造が衚瀺されたす。ここから、以前のバヌゞョンぞのコミット、プッシュ、ロヌルバックバックアりトおよびその他の操䜜を行うこずもできたす。

bitbucket.org/your_account_name/remote_projectで同様の倉曎セットを芋぀けるこずができ、1぀のアヌカむブにプロゞェクトの任意のバヌゞョンをダりンロヌドできたす。これは非垞に䟿利な堎合がありたす。

䞀般に、Mercurialずの最初の知り合いは終わったず思いたす。 詳现に぀いおは、 translate.by / you / mercurial- the-definitive-guide / into-ru / trans /にお問い合わせください。



この蚘事の察象者



おそらく、どこから始めればいいのでしょうか。この蚘事は誰のためのものですか 答えは簡単です-ハヌド通貚の䜿甚方法を孊びたい人のために。 私は䜕人かのデザむナヌ、゚ンゞニア、さらには䜜家でさえも通貚に「フック」したした。 それずあなたを詊しおください-これはあなたの仕事を倧いに促進できたす。



PSバヌゞョン管理システムのブログに移動したした。



All Articles