Visual Studio 2010を使用したMercurialの馬鹿チェックリスト
-
10-10-2019 - |
質問
ソースコントロールの馬鹿なので、このチェックリストでユーモアをしてください。
私はついにMercurial + Tortoisehg +を使用することにしました(vs2010 + hgsccpackage) +私の次のプロジェクトのためにキルン。
私は読む http://hginit.com/ そして、私はかなり遊んだが、ソースコントロールについてあまり知らないので、ここで間違いを犯したくない、私の現在のプロジェクトは私の最大かつ最も価値のあるものです。
これが私のチェックリストです:
創造:
- Kiln Onlineで新しいリポジトリを作成します。
- それで クローン それは私のPCで。
- プロジェクトフォルダー全体(そのフォルダーの下にあるmutipleプロジェクトを備えたソリューション)をリポジトリにコピーします。
- 私は追加します このコンテンツ リポジトリルートの.hgignoreファイルに。
- から Tortoisehg ファイルの追加]をクリックします
- 私は時々vsからコミットします。
- 私が元気で準備ができているとき、私は同期します - >プッシュ
(だからこれはすべて良いことですか?)
1 問題 私はここにいました。 HGSCCに相当するファイルの追加が見つかりません。VS-Ideから新しいファイルを追加したときに、ソースコントロール用のアイコンがないことに気付きました。 (それは水銀に追加されていませんか?)
それで、私はIDEを介してファイルを追加することになりましたが、チェックはありませんでした。それから数人のコミット(そして私が覚えていない他のこと)の後、私は余分な枝か何かがあることに気づきました:
そして今、私がプッシュしようとするなら私は得る "(did you forget to merge? use push -f to force)"
. 。 (そして、はい、私は着信を打ったが、今後の変更にはありません)
ともかく、ただの遊び場でしたか?** Tortoisehgを使用していることに気付きました - > VSからファイルを作成するたびにファイルを追加しました。 **(またはここにはより良い方法がありますか?)
分岐:
だから私は名前が付けられた分岐について少し混乱していますが、彼ら自身の枝/クローンのものとしてキルン。私 ここで指示を読んでください
- だから、オンラインでは、Kiln Onlineで「ブランチ」を作成するオプションがあります。
- 次に、これをローカルに新しいリポジトリとしてクローンします(まるで新しいリポジトリであるかのように)
- 私は自分の変更を加え、コミットし、プッシュします。
- 次に、メインリポジトリから引っ張り、ブランチリポジトリからメインにプッシュします。
それで、私はここでマージオプションを実際に見ていません、私はマーキュリアルがそれ自体でマージを処理すると推測していますか?それで、私はリポジトリエクスプローラーからブランチを見ていませんか?これはどのように行われるはずですか?
最後の質問、ビュー履歴とビューの変更ログオプションの違いと、それらがどのようなHGオプションに対応するかは何ですか?:
アップデート: :私がこのプロジェクトで唯一の孤独な開発者であることに言及するのを忘れました。 = p
解決
それぞれに私の意見/答えを含む、セクションごとにあなたの個々の質問があります。
7.私が得意で準備ができているとき、私は同期します - >プッシュ(だからこれはすべて良いことですか?
正しい。
このワークフローで異なるかもしれないことの1つは、他の誰かが同じリポジトリにプッシュする場合です。あなたがそれを持っているなら、ある時点で他の誰かがあなたが地元で持っていないリポジトリに変更をプッシュしました。オンラインリポジトリにブランチを作成し、複数の「ヘッド」で見えるようにするあなたのものをプッシュしようとすると(私がそれを意味することを理解していない場合は、水銀の文脈でその用語を調べる必要があります)。これが起こるようにするので、プッシュは中止されます。
それが中止するとき、代わりに、オンラインリポジトリからローカルリポジトリに変更を引き下げ、あなたが引っ張ったばかりの頭とあなたのチェンジセットヘッドをマージし、それからプッシュを再結合します。その間にもっとプッシュしました。)
HGSCCとファイルの追加については、HGSCCに問題があるため、VisualHgに切り替えました - http://visualhg.codeplex.com, 、具体的には、新しいファイルに関してHGSCCの1.52バージョンに何か問題があるように思われるためです。解決策が見つからない場合は、VisualHgを試してみることをお勧めします。
合併するのを忘れましたか?
変更をマージして、再び1つの頭のみを持っているようにする必要があります。その例のスクリーンショットには3つあり、「フォーム2にボタンを追加」、「最終コミット」、「2番目のPRJ(2)」があります。 「プロジェクトの大部分」と見なされるものに更新し、選択してから、他のヘッドの1つを右クリックして、Tortoisehgで「...」を選択し、マージとコミットを完了します。このようなマージ+コミットはそれぞれ1頭を削除するため、1ヘッドに戻るには少なくとも2つのそのようなマージが必要です。
KilnとFogcreekには、他の多くのものとは枝とは異なる概念があります。彼らは、名前付きブランチを使用する代わりに、まったく異なるブランチリポジトリを作成し、その中で作業することをお勧めします。名前付きのブランチは、新しいフォームを追加するか、大きなバグを修正するためのブランチとして、スクリーンショットの3つの変更セット(3つの「最終コミット」で終わる3つ)に名前を付けることに似ています。
したがって、ここでやったことをする代わりに、3つの頭を持っているので、ki kiln "way"は3つのクローンを持つことであり、それぞれに枝の頭までの変更だけがあります。基本的に、「2番目のフォームを追加」まですべてのものを備えた1つのレポクローンがあり、「2番目のproj」を続行しますが、その間の変更はそこにありません。 2番目のクローンには「2番目のフォームが追加された」までのものがあり、その後、1つの追加ラベル「フォームの追加ボタン」と「2番目のフォーム」が追加され、3つは「最終的なコミット」で終わります。
もちろん、最終的には、メインリポジトリに戻るためにプッシュして引っ張ると、とにかくそれらのブランチになりますが、大きな機能、モジュールなどを追加するなど、大きなブランチにはそのようなブランチリポジトリを使用することをお勧めします。
Mercurialは、それ自体でマージを処理すると推測していますか?
シナリオでのマージは、元のリポジトリとブランチリポジトリクローンの両方に新しい変更セットがある場合にのみ機能します。
それがある場合、ブランチリポジトリから元のリポジトリにプッシュする(または他の方法を引く)ことで、ターゲットリポジトリに新しいヘッドが追加されます。これは、マージがあなたが避けるのに役立つものです。
このようにして、あなたのワークフローは次のとおりです。
- ブランチリポジトリに持っているすべての変更をプッシュします(つまり、最初にブランチリポジトリを必要とする理由から生じる変更セット、大きなバグフィックス、新機能、大きな書き直しなど)
- ブランチリポジトリから元のリポジトリにプッシュしてみてください。これにより、ターゲットリポジトリにヘッドが作成されるというメッセージが表示されます。
- 元のリポジトリからBranch Repositoryに引き込みます。これにより、別のヘッドが作成されます。
- ブランチリポジトリからローカルリポジトリに引き込み、ここでマージを行い、すべての競合を処理し、最終的にマージの変更をコミットします
- ローカルリポジトリからブランチリポジトリに戻ります
- 公式にする前にkiでやりたいと思うかもしれないコードレビューを完成させる
- ブランチリポジトリから元のリポジトリにプッシュします(これはステップ2と同じです。他の誰か(またはあなた)がその間に元のリポジトリでより多くの作業を行った場合、ステップ3に戻って繰り返します)
ビュー履歴とビューの変更ログオプションの違い
違いは、あなたがそれを見るものです。ビュー履歴は、選択したものの履歴を常に示しています。ファイルであろうとソリューションファイル自体などです。そのファイルを含む変更だけです。
shangelogビューは、選択したものに関係なく、リポジトリのChangesetログを表示します。
他のヒント
これを印刷し、ラミネートして壁に貼り付けます。やった。
プロジェクトがまだMercurialによって制御されていない場合は、「Source Controlに追加」コマンドを使用する必要があります。ソリューションエクスプローラーのソリューションまたはプロジェクトファイルを右クリックして、コンテキストメニューでコマンドを選択します。このコマンドは、それがない場合は、ソリューション/プロジェクトの場所でリポジトリを作成します。
Visual Studioの外でMercurialにプロジェクトを追加した場合は、IDEでプロジェクトをリロードする必要があります。それ以外の場合、HGSCCPackageはプロジェクトが制御されていることを知らない。
プロジェクトが制御されている場合、IDEからそのプロジェクトに既存または新しいファイルを追加すると、自動的にそれらをMercurialに追加します。
Mergeコマンドは、「変更ログ」ダイアログで使用できます。マージを実行するには、REV1に「更新」する必要があり、(Rev2)とマージするRevisionを選択し、Toolbarコマンドまたはコンテキストメニューコマンドを使用して「マージ」コマンドを実行します。
HGSCCPackageでバグを見つけたと思われる場合は、HGSCCPackageの問題トラッカーで再現する手順で問題を作成します(http://bitbucket.org/zzsergant/hgsccpackage/issues).