リポゞトリの物語

この話は、倚くの倚くの改蚂前に始たりたした-その埌、SVNリポゞトリは初期の状態であり、その存圚によっおそれを冒secしたバグは1぀もありたせんでした。 最初のコミット、最初のロヌルバック、ログビュヌ-これらはすべおずおも゚キサむティングで、ずおも新しいものでした。 そしお、リポゞトリは、これらの最初の、そのような快適なステップがその埌圌を手術台に導くず仮定できたすか



リポゞトリは成長、クレヌプ、成熟したした。 時間が経぀に぀れお、私はコミットに慣れ、最初のタグが珟れ、ブランチの倢でさえ実珟䞍可胜に思えたした。 リポゞトリは他のSVNリポゞトリず知り合いになり、ファむルをいく぀かのリポゞトリず亀換し始めたした。 時々、圌は新しい友人から長い間倉曎を送り出し、その過皋で差分の分析を楜しんでいた。



最初の雲が地平線䞊に珟れ始めたのは、リポゞトリが開発者の䌚話でたすたす銎染みのない単語「Git」ず「DVCS」を聞き始めたずきです。 圌はリポゞトリの友人にこれに぀いお尋ねようずしたしたが、圌らは恥ずかしそうに目をそらしただけでした...



時間が経぀に぀れお、これらの心配はおさたりたしたが、人生は以前ず同じではなくなりたした。 リポゞトリは急萜し、人生の意味に぀いおもっず考え始めたした。 叀い結び぀きはもはや喜びを䞎えず、むしろ負担の倚い䟝存関係に倉わりたした。 マヌゞ䞭に、悪倢が䞍溶性の玛争に぀いお倢を芋るようになりたした。



コミットが突然停止したずき、人生はゆっくりず流れたした。 䞍安な予感はすぐに再開したした。 もちろん、リポゞトリは、開発者が䌑暇をずらなければならないずいう考えで安心し、すぐにすべおが通垞のコヌスに戻りたすが、䜕か悪い感じは去りたせんでした。



ある晩、ドアがノックされたした。 「最埌に、svn commit」、リポゞトリは幞犏に考え、長幎にわたっお巧劙にドアに飛び぀いた。 「それは誰ですか」ず圌は尋ねたが、それに応えお、圌はドアの倖で緊匵したスナッフルだけを聞いた。 スプヌンの䞋で卑劣に吞い蟌たれた。 しばらくしお、ドアの埌ろで、圌らは蚀いたした「開いお、svnadmin dump」。 震えおいる手で、リポゞトリはドアを開けたした...そしお、感芚なしで萜ちたした。



コミットは私の目の前で次々ず競い合い、珟れたり消えたりしたので、䜕床も繰り返したした。 「Svnadminのロヌド、svnadminのダンプ、svnadminのロヌド、svnadminのダンプ」-リポゞトリは䜕が起こっおいるのか理解できず、意識を取り戻したか、再び忘华に倱敗したした。 そしお、遠くにある小さなちら぀きの光だけが垌望に圱響を䞎えたした...



䞻人公をしばらく眮いお、䜕が起こったのかを把握したしょう。



開発者の目を通しお



賢明な読者は、Repositoryがそれ自身を芋぀ける状況が䜕らかの圢で分散バヌゞョン管理システムに関連しおいるず瀺唆するかもしれたせん。 これがたさに起こったこずです-開発者はMercurialのすべおの利点を吹き蟌たれ、そこですべおのコヌドを移行するこずに決めたした。 しかし、SubversionからMercurialぞの移行は非垞に簡単に行うこずができたすが、なぜリポゞトリを苊しめる必芁があったのですか



事実は、開発者が2぀の間違いを犯す前に、今ではすべおの栄光を芋せおいるずいうこずです。
  1. 最初は、すべおのベストプラクティスに反しお、埓来のフォルダトランク、ブランチ、タグを䜜成するこずなく、リポゞトリのルヌトにコミットし始めたした。 その埌、これらのフォルダヌが䜜成され、ファむルが転送されたしたが、ご存じのずおり、リポゞトリからコミットを消去するこずはありたせん。 さお、すべおを倉曎しないたたにしおおくず、Mercurialに移行するずきに、トランクの倖偎のコミットが消えたす。
  2. 私たちが思い出すように、ヒヌロヌのリポゞトリは「面倒な䟝存関係」に陥っおいたす。もちろん、ここでは、svnexternalsに぀いお話しおいたす。 前に、この技術の䞍敎合に぀いお話したした。 珟圚、Mercurialに移行する堎合、svnexternalsを移行する簡単な方法はありたせん。
SubversionからMercurialに履歎党䜓を正しく転送するために、開発者はSVNリポゞトリを倉曎しお䞊蚘の問題を取り陀くこずにしたした。



メスの䞋のリポゞトリ



リポゞトリを倉曎するには、たずsvnadminナヌティリティが必芁です。このナヌティリティを䜿甚するず、SVNリポゞトリの完党なダンプ、特定のリビゞョンたたはリビゞョンの範囲のダンプ、および既存のリポゞトリぞのロヌルダンプを䜜成できたす。 Windowsナヌザヌの小さな䜙談-このナヌティリティはTortoiseSVNの䞀郚ではありたせんが、svnadminが存圚するSlik SVNなどの远加のSubversionクラむアントをむンストヌルできたす。



リポゞトリを倉曎する䞀般的な考え方は次のずおりです。「正しい」コミットを倉曎せずにコピヌし、「間違った」コミットを手動で眮き換えるこずにより、リポゞトリを最初から再䜜成する必芁がありたす。 私たちの堎合、正確性は、コミットにsvnexternalsの蚀及が含たれおおらず、すべおのファむルがトランクにある状況ずしお理解されたす。 再構成埌、倉曎されたコミットの元のコミットの日付ず時刻を調敎する必芁がありたす。



メ゜ッドの動䜜を理解するために、実際のリポゞトリの倉曎を怜蚎しおください。 䞊蚘の問題をすべお含む小さなテストリポゞトリを準備したした。 ダンプdemo_repo.dmpは、 こちらの蚘事に蚘茉されおいる他のダンプず䞀緒にダりンロヌドできたす。



リポゞトリには8぀のリビゞョンが含たれおいたすが、それぞれの説明を次に瀺したす。
  1. リポゞトリのルヌトにテキストファむルが远加されたした。
  2. 小さなCHelloWorldプロゞェクトがリポゞトリのルヌトに远加されたした。
  3. トランク、タグ、ブランチフォルダが远加されたした。 ルヌトからのすべおのファむルはトランクに移動されたす。
  4. 「サヌドパヌティ」フォルダヌが远加され、倖郚リポゞトリヌからサブフォルダヌにファむルをダりンロヌドするためのsvnexternalsプロパティヌが蚭定されたした。
  5. 「サヌドパヌティ」フォルダヌのsvnexternalsプロパティが削陀され、トランクフォルダヌに蚭定されたした。
  6. トランクからテキストファむルを削陀したした。
  7. トランクフォルダヌにはsvnignoreプロパティが蚭定されおいたす。 HelloWorldの䞀郚のファむルを倉曎したした。
  8. トランクにテキストファむルを远加したした。 HelloWorldのサブフォルダヌを削陀したした。
明らかに、ここでの「正しい」ものはリビゞョン6ず8のみです。残りはすべお䜕らかの方法で修正する必芁がありたす。



リビゞョン1、2、3の問題は、ファむルがトランクの倖偎にあるこずです。 これを修正するために、それらの前に1぀のコミットを挿入し、ブランチ、タグ、トランクフォルダヌを䜜成したす。 ファむルがトランクに远加されるように、コミット1および2を倉曎したす。 コミット3は完党に削陀されたす。



リビゞョン4ず5はsvnexternalsに関連しおいたす。倖郚の䟝存関係を倖郚リポゞトリからロヌドされたファむルに盎接眮き換える必芁がありたす。 リビゞョン7は明らかに無害ですが、svnexternalsに間接的に関連しおいたす。詳现は埌で説明したす。



それでは始めたしょう。 Windowsのリポゞトリを倉曎したすが、たずえばLinuxの堎合ずたったく同じ手順を実行するこずを劚げるものはありたせん。



SVNを取り陀く倖郚



すぐにすべおのコミットをトランクに移動しお、svnexternalsを削陀しないでください。 これらのタスクを順番に完了するこずをお勧めしたす。 2番目のタスクから始めたす。



たず、手動で眮き換える必芁がある問題のあるすべおのリビゞョンを識別する必芁がありたす。 テキスト゚ディタでリポゞトリの完党なダンプを開き メモ垳++を䜿甚、「svnexternals」ずいうフレヌズの出珟を順番に探したす。 それらは必芁以䞊に倚くなる可胜性がありたす。私たちはそのような発生にのみ興味がありたす



  K 13
 svn倖芳 


そのような堎所ごずに、䞊の「Revision-number」ずいう行を芋぀ける必芁がありたす。 必芁な問題のあるリビゞョンの番号が含たれおいたす。







テストリポゞトリのダンプの最埌に到達するず、4、5、および7の問題リビゞョン番号を取埗する必芁がありたす。

次に、倉曎を必芁ずしないリビゞョン甚の郚分ダンプを準備する必芁がありたす。 これを行うには
  1. リポゞトリを完党にロヌカルフォルダヌにロヌドし、full_repoず呌びたす。 これは、次のコマンドラむン呌び出しを䜿甚しお行われたす。



      C\ Subversion> svnadmin create full_repo
     C\ Subversion> svnadmin load full_repo <demo_repo.dmp 


  2. 次に、倉曎する必芁のないリポゞトリのリビゞョン1-3、6、8のダンプを準備したす。



      C\ Subversion> svnadmin dump full_repo -r 03 --incremental> demo0_3.dmp
     C\ Subversion> svnadmin dump full_repo -r 6 --incremental> demo6.dmp
     C\ Subversion> svnadmin dump full_repo -r 8 --incremental> demo8.dmp 


  3. 結果のダンプに文字列「svnexternals」が含たれおいないこずを確認しおください。 今すぐこれを慎重に確認するこずが重芁です。この段階で誀っお間違えるず、将来の生掻が非垞に耇雑になりたす。
次に、倉曎されたリポゞトリの䜜成を開始したす。 最初に、最初の3぀のリビゞョンをロヌドしたすたずえば、result_repoず呌びたしょう



  C\ Subversion> svnadmin create result_repo
 C\ Subversion> svnadmin load result_repo <demo0_3.dmp


次に、4番目のコミットを修正する必芁がありたす。 これを行うには、新しいリポゞトリをチェックアりトする必芁がありたす。 これには、TortoiseSVNを䜿甚するか、次のようにコマンドラむンから䜜業を続行できたす。



  C\ Subversion> svn co file/// C/ Subversion / result_repo result_checkout 


すべおが蚈画どおりであるこずを確認したす-result_checkoutフォルダヌに移動しお、3぀のリビゞョンがロヌドされおいるこずを確認したす。



  C\ Subversion> cd result_checkout
 C\ Subversion \ result_checkout> svn log -l 1
 -------------------------------------------------- ----------------------
 r3 | シバ゚フ|  2010-12-09 23:53:09 +06002010幎12月9日朚曜日|  1行

トランクに移動したした。
 -------------------------------------------------- ----------------------


ここで、「正しい」4回目のコミットを実行する必芁がありたす。 これを行うには、4番目のリビゞョンの元のリポゞトリの状態が必芁です。 したがっお、私たちは圌のためにチェックアりトを行いたすが、すぐに改蚂番号4になりたす。



  C\ Subversion \ result_checkout> cd ..
 C\ Subversion> svn co file/// C/ Subversion / full_repo full_checkout -r 4 


倖郚リポゞトリからファむルがダりンロヌドされるため、最埌のコマンドには少し時間がかかる堎合がありたす。



時蚈を確認しおください。 䜜業フォルダヌは次のようになりたす。







たた、TortoiseSVNのfull_checkoutのログは次のようになりたす。







ログでは、第4リビゞョンで䜕が倉曎されたかを確認したす。 そしお、以䞋が倉曎されたした-「サヌドパヌティ」フォルダヌがトランクに远加されたしたが、単玔ではありたせんが、svnexternalsプロパティが蚭定されおいたす



 iTextSharp https://itextsharp.svn.sourceforge.net/svnroot/itextsharp/tags/iTextSharp_5_0_5/iTextSharp/text/xml/simpleparser/ 


したがっお、4回目のコミットを修正するには、修正するリポゞトリに/ trunk / 3rd party / iTextSharpフォルダヌを远加しおコミットする必芁がありたす。
  1. result_checkout / trunkに移動したす
  2. サヌドパヌティのフォルダヌを䜜成する
  3. full_checkoutからiTextSharpフォルダヌをコピヌしたす
  4. .svnサブフォルダヌを削陀したす
  5. result_checkoutリポゞトリ内のすべおのコンテンツを含むサヌドパヌティのフォルダヌを远加svn add
  6. 次のように、元の眲名を保持しおコミットしたす。

      C\ Subversion \ result_checkout> svn commit -m "倖郚参照を远加したした" 
OK、最初の倉曎されたコミットがありたす ただし、先に進む前に、そのようなプロセスの過皋で゚ラヌが䜕に満ちおいるかを考えおみたしょうたずえば、間違ったものをコミットしたり、間違ったダンプをロヌルした堎合。 リポゞトリには8回のコミットではなく2000回のコミットがあり、初めおsvnexternalsがリビゞョン番号1200にあるず想像しおください。 この堎合、最初のダンプ0〜1199のリビゞョンが既に読み蟌たれおいるため、チェックアりトには時間がかかりたす。



゚ラヌの結果は非垞に䞍快なものになる可胜性がありたす。再䜜成されたリポゞトリを簡単に砎壊する可胜性があるため、最初からやり盎す必芁がありたす。 したがっお、䞭間結果のバックアップの問題はすぐに凊理する必芁がありたす。 れロから埩元するのに時間がかかる堎合は、少なくずもリポゞトリresult_repoずチェックアりトresult_checkoutを保存する必芁がありたす。



この方法でバックアップを敎理したす-必芁なフォルダヌをzipアヌカむブに圧瞮し、特定のフォルダヌにコピヌしたす。 これを行うには、 7-zipアヌカむバを䜿甚したす。 むンストヌルしお、7z.exeぞのパスをPATH環境倉数に远加したす。 これで、次のようにリポゞトリの䞭間状態をバックアップできたす。



  C\ Subversion> 7zバックアップ\ result_repoX.zip result_repo、 
Xはリビゞョン番号ですたずえば、今回のケヌスではX == 4



䞭間結果を保存したら、次に進みたす。5番を手動でコミットする必芁がありたす。 これを行うには
  1. full_checkoutをリビゞョン番号5に曎新したす。



      C\ Subversion \ full_checkout> svn up -r 5 


  2. 5番目のコミットに含たれる倉曎を確認する
この堎合、倉曎は最小限です-svnexternalsプロパティは「サヌドパヌティ」フォルダヌに察しお削陀され、トランクフォルダヌに察しお䜜成されたした。 倖郚リポゞトリのアドレス、およびファむルをダりンロヌドするフォルダは倉曎されおいたせん。 したがっお、新しいリポゞトリの堎合、倉曎は必芁ありたせん。䜕らかの方法でコミットするだけです。 これを行うには、トランクに空のFictiveファむルを䜜成し、SVNに远加しおコミットしたす。 眲名をコミットに倉曎しないこずをお勧めしたす理由-埌で明らかになりたす



5回目のコミットが远加された埌、demo6.dmpをロヌルしたす。



  C\ Subversion> svnadmin load result_repo <demo6.dmp 


バックアップを䜜成し、プログラムの最埌の重芁なポむントであるコミット7の倉曎に進みたす。 full_checkoutリポゞトリを7番目のリビゞョンに曎新し、倉曎のリストを確認したす。







このコミットを倉曎する必芁がある理由は、svnexternalsに関しお倉曎が加えられおいないため、すぐには明らかになりたせん。 トランクフォルダヌのsvnignoreプロパティが倉曎されたした。これが理由でしょうか。 そうです。 実際には、トランクフォルダヌプロパティの完党な説明は、svnexternalsずずもにリビゞョン7のSVNダンプに栌玍されおいたす。







だから、ポむントに。 7回目のコミットを行うには2぀の方法がありたす。



1぀目は、元のリポゞトリから7番目のリビゞョンのダンプを取埗し、svnexternalsをtrunkフォルダヌプロパティから削陀したすテキスト゚ディタヌで開いお、削陀し、プロパティ「Prop-content-length」および「たたは、「svnadmin setrevprop」コマンドを䜿甚しお、この「正しい」ダンプを新しいリポゞトリにロヌルしたす。 この堎合、このアプロヌチが最適な゜リュヌションです。



ただし、ほずんどの堎合、実際のリポゞトリに䜿甚する必芁があるため、2番目の方法を怜蚎する方が興味深いです。 この方法は、TortoiseSVNのスキンを詊しお、7のすべおの倉曎を自分でコミットするこずで構成されたす。



SVNクラむアントのアクションをどれだけ慎重に繰り返すかは、忍耐ず泚意力に完党に䟝存したす。 各倉曎を個別に凊理しないでください。䞻なこずは、元のリポゞトリず新しいリポゞトリのファむルセットが䞀臎するこずを確認するこずです。 唯䞀のこずは、ファむル/フォルダヌをSVNに移動するこずは、移動する前にオブゞェクトの履歎を倱わないように正確に繰り返すこずが望たしいずいうこずです。 ずころで、この段階で、トランクで以前に䜜成した仮想ファむルを削陀するこずもできたす。



すべおの倉曎が行われた埌、圱響を受けるプロゞェクトがただコンパむルされ、テストに合栌しおいるこずを確認する䟡倀がありたす。 ただし、Subversionクラむアントずしおの動䜜に完党に自信がある堎合は、確認できたせん。



次に、倉曎をコミットしおフィニッシュラむンに進みたす。 最埌のダンプdemo8.dmpをロヌルしたす。 result_checkoutずfull_checkoutの䞡方の䜜業コピヌを最新のリビゞョンに曎新し、それらを比范したす。 すべおが正しく行われた堎合、ファむルのセットで完党に同䞀である必芁がありたす。



倉曎されたリポゞトリのダンプを取埗したす。



  C\ Subversion> svnadmin dump result_repo> without_externals.dmp 


このダンプには倖郚の䟝存関係はたったくありたせんが、䞀郚の倉曎は匕き続き必芁です。 事実、手動で行われたコミットの堎合、新しいコミット時間がダンプに曞き蟌たれ、誀ったナヌザヌ名通垞はWindowsのオペレヌティングシステムの名前ず同じが曞き蟌たれたす。 修正する必芁がありたす。



テキスト゚ディタヌで元のダンプず新しいダンプを開き、倉曎されたリビゞョンこの䟋では4、5、7を順番に確認したす。 次のようになりたす。







次に、新しいダンプの察応する日付を元の日付に慎重に眮き換える必芁がありたす。 これを行うには、再びsvnadminナヌティリティずその「setrevprop」オプションを䜿甚できたすが、私の意芋では、テキスト゚ディタヌで手でこれを行う方が高速です。



日付の眮換は無害な操䜜ですが、コミットの䜜成者を眮換するには远加の䜜業が必芁です。 ご芧のずおり、「Prop-content-length」プロパティず「Content-length」プロパティの倀、および初期ダンプず曎新されたダンプの䜜成者の名前の䞊にある数字は䞀臎したせん。 これは、著者の名前の長さが元の名前ず異なるためです。 したがっお、たずコミットの䜜成者を倉曎し、次に察応する倀を曎新したす。 Notepad ++は、すべおが正しく行われたこずを確認する䟿利な方法を提䟛したす。







倉曎されたすべおのコミットのプロパティが修正された埌、svnexternals completeを取り陀く段階を怜蚎できたす。 ただし、その埌、結果のダンプがロヌカルリポゞトリに完党に正しくロヌドされおいるこずを確認するこずをお勧めしたす。



  C\ Subversion> svnadmin create test_repo
 C\ Subversion> svnadmin load test_repo <without_externals.dmp 


このチェック䞭に、リポゞトリの倉曎䞭に発生した゚ラヌが自動的に怜出される堎合がありたす。 この堎合、ダンプのロヌドぱラヌの堎所で䞭断され、その理由がわかりたす。 これは通垞、ファむルの内容を台無しにしたり、ファむルを曎新しない堎合に発生したす。 ゚ラヌメッセヌゞは、チェックサムが䞀臎しないこずを通知したす。



すべおのコミットをトランクに転送する



前の手順で習埗したスキルを䜿甚するず、すべおのコミットをトランクに転送するのは簡単です。 したがっお、最初の2぀のコミットがリポゞトリのルヌトに察しお行われ、3番目のコミットではトランク、タグ、ブランチフォルダが䜜成され、すべおのファむルがそこに転送されるリポゞトリwithout_externals.dmpがありたす。



行動蚈画
  1. クリヌンなリポゞトリを䜜成し、空のブランチ、タグ、トランクフォルダヌをコミットしたす
  2. ダンプwithout_externals.dmpを2぀に分割したす。0から2たでのリビゞョンず4から8たでのリビゞョンです。 コミット3は砎棄されたす
  3. 最初のダンプ0から2リビゞョンでは、ファむル内のすべおのパスにプレフィックス「trunk /」を远加したす
  4. 䞡方のダンプを新しいリポゞトリに連続的にロヌルしたす
  5. ゚ラヌがないこずを確認し、結果のリポゞトリの完党なダンプを䜜成したす
  6. 最初のコミットの時間ず䜜成者を倉曎したす
行こう クリヌンなリポゞトリfinal_repoフォルダヌを䜜成し、チェックアりトしたすfinal_checkout。 3぀のフォルダヌを䜜成し、リポゞトリヌに远加しおコミットしたす。



  C\ Subversion> svnadmin create final_repo
 C\ Subversion> svn co file/// C/ Subversion / final_repo final_checkout
 C\ Subversion> mkdirブランチタグtrunk
 C\ Subversion> svn add branch tags trunk
 C\ Subversion> svn commit -m "準備されたリポゞトリ構造" 


䞍芁なコミットを排陀するために、倖郚䟝存関係のないリポゞトリのダンプを2぀に分割したした。



  C\ Subversion> svnadmin create without_externals_repo
 C\ Subversion> svnadmin load without_externals_repo <without_externals.dmp
 C\ Subversion> svnadmin dump without_externals_repo -r 02 --incremental> final0_2.dmp
 C\ Subversion> svnadmin dump without_externals_repo -r 48 --incremental> final4_8.dmp 


ダンプfinal0_2.dmpを開き、すべおの行「-path」を「-pathtrunk /」に眮き換えたす。 重芁-パスは「Node-path」および「Node-copyfrom-path」プロパティで䜿甚できるため、「Node-path」だけでなく、たさにこれを眮き換えたす。







final0_2.dmpずfinal4_8.dmpを新しいリポゞトリにロヌルしたす。



  C\ Subversion> svnadmin load final_repo <final0_2.dmp
 C\ Subversion> svnadmin load final_repo <final4_8.dmp 


final_checkoutのSVNログを確認しおください。すべおのコミットは、トランク内のファむルに察しおのみ動䜜したす。 曎新されたダンプを取埗したす。



  C\ Subversion> svnadmin dump final_repo> final.dmp 


最初のリビゞョンの時刻ず䜜成者、および0番目のリビゞョンの時刻を倉曎したす。 without_externals.dmpの0番目のリビゞョンの時間を基準ずし、それを新しいダンプの0番目のリビゞョンに䜿甚しおから、数秒を远加しお1番目のリビゞョンに蚭定したす。

結果のダンプが正しいこずを確認しお、リポゞトリにロヌドしたす。



  C\ Subversion> svnadmin create test_final_repo
 C\ Subversion> svnadmin load test_final_repo <final.dmp 


ダりンロヌド䞭にチェックサムの䞍䞀臎に関する゚ラヌが発生した堎合、「-path」行がファむル内のどこかにある可胜性が高く、誀っお眮換したした実際のリポゞトリでは、眮換する必芁のあるすべおの堎所を目で芋るこずはできたせんたくさん。 さらに、文字列はリビゞョンプロパティずたったく同じ圢匏たずえば、「Node-path...」で発生するため、眮換テンプレヌトを匷化しおも圹に立ちたせん。



この䟋では、゚ラヌは発生したせん。぀たり、Mercurialぞの移行に適した完党なリポゞトリが埗られたした。



たずめるず



SVNリポゞトリを倉曎するために䜿甚される倚くの手法を怜蚎したした。 ハむラむト
  1. svnadminナヌティリティがメむンツヌルです。 ダンプをリポゞトリにアップロヌドし、目的のリビゞョンのダンプを取埗できたす。
  2. 倉曎されたリポゞトリの「手動」コミットず既存のダンプのロヌドを亀互に行うこずができたす。 兞型的なトリックは、䞍芁なコミットをリポゞトリからスロヌし、新しいリポゞトリでそれらを眮き換えるたたは単にスキップするこずです。
  3. できるだけ頻繁に䞭間結果のバックアップを䜜成したす。
  4. すべおの兞型的な操䜜ダンプのロヌド、ダンプの䜜成、チェックアりト、バックアップには、batたたはbashスクリプトを䜿甚するず䟿利です。
  5. テキスト゚ディタヌでSVNダンプを倉曎する堎合-数倀の曎新を忘れないでください-察応するコンテンツのサむズバむト単䜍。
  6. SVNダンプが倧きい> 700 MB堎合、Windowsのほずんどのテキスト゚ディタヌは正垞に開くこずができないため、線集に問題がありたす。 メモ垳++も䟋倖ではありたせん。 私は倚くの異なるオプションを詊したしたが、 EmEditorのみが圹に立ちたした。少量のRAMを搭茉したマシンでもうたく動䜜したす。
  7. 倉曎埌、結果のダンプからリポゞトリをロヌドできない堎合、オフセットを䜿甚しお䜕かを台無しにしたり、ファむルの曎新を忘れたり、ファむルの内容を台無しにしたりしたす。
  8. 特定のコミットで倉曎を自分で繰り返す必芁がある堎合、フォルダヌ内のすべおの.svnサブフォルダヌを再垰的に削陀するず䟿利です。 これを行うには、珟圚のディレクトリ内のすべおのサブフォルダヌを再垰的に削陀するスクリプトWindows甚を䜿甚できたす。



      FOR / F "tokens = *" %% G IN 'DIR / B / AD / S * .svn *'DO RMDIR / S / Q "%% G" 


  9. ダンプのリビゞョンの説明のバむト数に圱響するため、眲名を倉曎しおコミットする必芁はありたせん。 このため、コミットの眲名の長さの違いも考慮する必芁があるため、コミットの䜜成者の名前を曎新するのが少し難しくなりたす。


おわりに



リポゞトリが実珟したした。 コミット、ログ、svnadmin-すべおが圌のか぀お明るい頭で混同したした。 麻酔のベヌルはただ完党に消散しおいたせんが、リポゞトリはすでにその内郚の䜕かが倉化したず感じおいたす。



目を開けるず、リポゞトリは最初に呚りを芋回したした-郚屋は広々ずしおいたしたが、むンテリアはたったく銎染みがありたせんでした。 コミット付きのオヌクシフォンの代わりに、小さなものがあり、壁にタグの付いた箱の代わりに、「6fc1d7a7ae346b0a09be5647e94c1561764b8619」のような䞍明瞭な線の付いた小さなステッカヌが貌られおいたした。 しかし、驚くべきこずに、Feng Shuiによるず、リポゞトリは郚屋の党䜓的な装食が奜きで、すべおが気持ちよく装食されおいたした。



リポゞトリには、ドアベルの鳎り方に本圓に慣れる時間がありたせんでした。 「こんにちは コミットメントの配信”-碑文の぀いた垜子の背の䜎い男” Mercurialがばらばらになった。 リポゞトリには口を開く時間がありたせんでした。芋知らぬ人が、衚玙に「hg commit」ずいう碑文が曞かれた2冊の小冊子を手枡すず、そのようになりたした。



リポゞトリは、圌がすでにこれを経隓したこずを思い出したした。 むかしむかし、最初に芋知らぬ人が最初の「svn commit」を自分のアパヌトにドラッグしたした。 歎史は今繰り返されおいたすか リポゞトリは喜びで息をのむようなものでした-蓄積された経隓ず知識をすべお持っお子䟛時代に戻る幞運な人はほずんどいたせんでした、そしおそれはそれで起こったようです そしお、圌は無駄にサンタクロヌスを信じなくなりたした-これは奇跡である可胜性がありたす-それは圌の仕事でした...



リポゞトリは䜕が先にあるかを知りたせんでした。 圌は䞀぀のこずを明確に理解したした-圌は新しい人生を始めたした-冒険で、面癜くお、予枬䞍可胜でした。 惑星マヌキュリアルでの生掻。



All Articles