私がローカルの水銀レポで始めるならば、私は "メイン"レポ(私のdvcsロードを赦してください)と考えて、バックアップとしてbitbucketを使うつもりです追跡機能を発行すると、自分のローカルリポジトリ内のすべての変更を行うことができ、変更をbitbucketに送り返すために「hg push」を実行できます。bitbucket、 "hg push"と "hg update"
「hg update」を使用してローカルマシンで実行されるこの「hg push」コマンドに従う必要はありませんか?
私がローカルの水銀レポで始めるならば、私は "メイン"レポ(私のdvcsロードを赦してください)と考えて、バックアップとしてbitbucketを使うつもりです追跡機能を発行すると、自分のローカルリポジトリ内のすべての変更を行うことができ、変更をbitbucketに送り返すために「hg push」を実行できます。bitbucket、 "hg push"と "hg update"
「hg update」を使用してローカルマシンで実行されるこの「hg push」コマンドに従う必要はありませんか?
なぜBitBucketのサーバーの作業ディレクトリに何があるのですか?プッシュする限り、変更はリポジトリにあり、BitBucketページに表示されます。
編集: OK、これを便利な回答に編集します。
BitBucketでdjango-hoptoadのような私のリポジトリをクローンダウンするとします。あなたのローカルマシン上django-hoptoad
という名前のフォルダがあるでしょうし、その内容は次のようになります:
django-hoptoad/
|
+-- .hg/
|
+-- ... my code and other folders
リポジトリ自体に関する全てのデータは.hg/
フォルダに保存されています。これは、Mercurialがどのファイルがどのチェンジセットで変更されたのか、そして他の多くのものについてのデータを保持する場所です。
あなたは(それは単純化しすぎだが)このように考えることができ:
django-hoptoad/
|
+-- .hg/
| |
| +-- data about changeset 1
| +-- data about changeset 2
|
+-- ... my code and other folders as they appear in changeset 2
あなたがhg pull
を実行し、更新しない場合は、あなたがリポジトリにどんな新しいチェンジを引っ張っ:
django-hoptoad/
|
+-- .hg/
| |
| +-- data about changeset 1
| +-- data about changeset 2
| +-- data about changeset 3 (NEW)
| +-- data about changeset 4 (NEW)
|
+-- ... my code and other folders as they appear in changeset 2
更新しないと、... my code and other folders
はまだchangeset 2
にあるものと同等ですが、他の変更セットは依然としてリポジトリに残ります。
hg update
を実行すると、Mercurialは... my code and other folders
を最新のチェンジセットの内容に更新します。
django-hoptoad/
|
+-- .hg/
| |
| +-- data about changeset 1
| +-- data about changeset 2
| +-- data about changeset 3
| +-- data about changeset 4
|
+-- ... my code and other folders as they appear in changeset 4
本当に、これは... my code and other folders
にあると何が起こるか、リポジトリに何があるかと一致する必要がないことを意味します。あなたはそれを削除できますし、すべてのチェンジはまだリポジトリに次のようになります。
django-hoptoad/
|
+-- .hg/
|
+-- data about changeset 1
+-- data about changeset 2
+-- data about changeset 3
+-- data about changeset 4
あなたが今コミットした場合、それは基本的に「何のファイルは、」言わない新しいチェンジセットを作成します。あなたはコミットする必要はありません。リポジトリにはチェンジセットに関するすべてのデータがまだ残っているため、人々は引き続きプッシュして引っ張ることができます。
これは、ほぼ確実にBitBucketがやっていることです。 BitBucketのサーバーにログインしたり、コードを編集したり、コミットしたりすることは決してできません。プッシュ/プル/クローンを実行するだけです。つまり、... my code and other folders
は決して実際には使用されませんので、私はJesperがディスクスペースを節約するためにそれを削除するよう設定していると思います。
hg update
は実際に作業ディレクトリにのみ影響し、BitBucketの作業ディレクトリは決して使用されないため、BitBucketにプッシュした後にhg update
を実行する必要はありません。
これは本当に目が離せないものです。私はJesperがここで活動しているのを知っています。多分私達は彼からこのことについても聞くでしょう。 – chefsmart
ローカルマシンでhgアップデートを実行する必要はありません。更新は、データがローカルリポジトリにプッシュされ、ローカルリポジトリからFROMを押しているときに使用されます。
working copy(別名作業ディレクトリ)とローカルrepositoryの間で混乱している可能性があります。これらは関連しているものの、別々のものです。ローカルリポジトリは作業コピーが特定のリビジョンからのファイルのバージョンに加えて、それらへの変更、
リポジトリとupdate
とcommit
移動の変化との間にhg
コマンドpush
とpull
移動の変更が含まれているのに対し、すべての完全な履歴がファイルを追跡含まれていあなたの作業コピーとあなたのローカルリポジトリの間。
だからもしローカルリポジトリを変更し、そうローカルリポジトリにupdate
を実行する必要はありませんではないでしょうリモートリポジトリへpush
変更。しかし、リモートリポジトリを使用している人はupdate
を実行する必要がありますので、変更内容は作業コピーに表示されます。逆に、pull
がリモートリポジトリから変更された場合は、update
を実行して、これらの変更が作業コピーに表示されるようにする必要があります。
同様に、push
を使用して別のリポジトリに送信する前に、作業コピーからローカルリポジトリへのすべての変更をcommit
する必要があります。
ローカルリポジトリを変更しないで、更新を実行する必要がないリモートリポジトリに変更をプッシュすると、
リモートのrepoに変更をプッシュします。この場合は、私のbitbucket repoです。だから私は何とかbitbucketで "hg update"をやる必要はありませんか?はいの場合、どうですか?いいえ、なぜですか? –
chefsmart
あなたのリポジトリからの変更がbitbucketの作業コピーに反映されるように、bitbucketの更新を行う必要があります。私はあなたがビットバケットレポのためにローカルで "hg update"を実行することによってのみこれを行うことができると思います。私はこれを反映する答えを更新しました。 –
もちろん、あなたはbitbucketのアップデートをしません。その作業コピーはどのような目的に役立つでしょうか?まったく、**全くありません**。 –
Bitbucketはレポジトリを表示します。 Dave Webbによって指摘されているように、hg update
は作業コピーの更新に関係しています。 hg push
を実行すると、Bitbucketのリポジトリを更新するためにチェンジセットを転送しています。そのため、ウェブインタフェースにこれが表示されます。
Steve Loshが指摘しているBitbucketには作業コピーはありません。あなたの後ろにはhg update
もありません。
あなたは作業コピーせずにクローンを作ることによってこれを自分で試すことができます。
% hg clone --noupdate repo repo-empty
その後、repo-empty
に入るとhg log
を行います。そこにファイルがなくても、の履歴(つまり、レポジトリ)はまだクローンされています。
% hg update
と
% hg update null
あなたがファイルを見て、新しいコミットを作りたい場合は作業コピーのみが必要とされていると再び消える:あなたは、ファイルがhg update
コマンドで表示させることができます。それ以外の場合は、スペースを節約するために削除することができます。これは通常、hg serve
でのサービスにのみ使用されるクローン、またはBitbucketが使用するものと同等のもので行われます。
私は十分に説明していないと思います。私は自分のローカルマシンで自分のコーディングを行います。満足したら、私はローカルマシン上で "hg commit"を実行します。これまでのところとても良いですが、今はビットバケットが写真の中にあります。だから私はビットバケットに "押し込む"。 bitbucketで "hg update"する必要はありませんか?はいの場合、どうすればよいですか? – chefsmart