タグ付けされた質問 「dvcs」

分散バージョン管理(DVCS)は、ソフトウェアリビジョンを追跡し、多くの開発者が共通のネットワークに接続していなくても、特定のプロジェクトで作業できるようにします。

10
私はSubversionオタクです。Mercurial、Git、またはその他のDVCSを検討する必要があるのですか?
分散バージョン管理システム(DVCS)の利点を理解しようとしています。 Subversion Re-educationとMartin Fowlerによるこの記事は非常に有用であることがわかりました。 Mercurialおよびその他のDVCSは、変更セットとローカルコミットを使用してコードを処理する新しい方法を促進します。それは地獄と他のコラボレーションの問題をマージすることを防ぎます 私は継続的な統合を実践しているので、これに影響されることはありません。プライベートブランチで単独で作業することは、実験しない限りオプションではありません。メジャーバージョンごとにブランチを使用し、トランクからマージされたバグを修正します。 Mercurialを使用すると、副官を持つことができます これはLinuxのような非常に大規模なプロジェクトに役立つ可能性があることは理解していますが、小規模で高度に協力的なチーム(5〜7人)には価値がありません。 Mercurialはより高速で、ディスクスペースが少なくて済み、完全なローカルコピーにより、ログと差分の操作がより高速になります。 私が取り組んでいる非常に大規模なプロジェクトであっても、SVNの速度やスペースの問題に気づかなかったので、私もこれには関心がありません。 元SVNオタクからの個人的な経験や意見を求めています。特に、変更セットの概念と、測定した全体的なパフォーマンスの向上に関して。 更新(1月12日):今、試してみる価値があると確信しています。 更新(6月12日):Mercurialにキスし、気に入った。彼の桜の地元のコミットメントの味。試しにMercurialにキスしました。SVNサーバーがそれを気にしないことを願っています。それはとても間違っていた。とてもいい感じがしました。今夜恋しているわけじゃない。 最終更新(7月29日):Eric Controlの次の例であるVersion Control by Exampleをレビューする特権がありました。彼は私を納得させました。Mercurialに行きます。

7
Bitbucket、Github、Kiln、および同様のDVCSブラウジングおよび管理ツールに代わるオープンソースの代替手段はありますか?[閉まっている]
Bitbucket、Github、Kiln、SCM-Manager、Rhodecodeなど、DVCSブラウジングと管理を提供するいくつかのツール/サービスを認識しています。 しかし、私が検討しているユースケースは次のようなものです: すべてのソースコードは、雇用主の内部サーバーに存在する必要があります。 ソリューションはオープンソースでなければなりません。 プロジェクトwiki、リポジトリの参照と管理、コードレビューなどのソーシャルコーディングの側面など、BitbucketまたはGithubのようなエクスペリエンスを提供する必要があります。 ソリューションには、水銀のサポートが必要です(他のDVCSをサポートしていない場合)。 これらのうち、SCM-ManagerとRhodeCodeのみが、独自のサーバーにインストールでき、オープンソースであるため、近づいています。ただし、BitbucketやGithubの経験はありません。課題トラッカーやウィキはありません。UIは機能的ですが、GithubやBitbucketに匹敵しません。 リポジトリブラウザでTracまたはRedmineに近づくことができますが、残念ながらリポジトリ管理機能はありません。 Bitbucket、Github、またはKilnと同様のエクスペリエンスを提供する他のオープンソースツールはありますか?

7
多くのプロジェクトが「git merge」よりも「git rebase」を好むのはなぜですか?
DVCSを使用する利点の1つは、edit-commit-mergeワークフローです(多くの場合、CVCSによって施行されるedit-merge-commitを超える)。マージに関係なく、固有の各変更をリポジトリに記録できるようにすることで、DAGがプロジェクトの真の血統を正確に反映するようになります。 なぜこれほど多くのWebサイトが「マージコミットを回避する」ことについて話しているのですか?事前コミットまたはマージ後のリベースをマージすると、リグレッションの分離、過去の変更の取り消しなどが難しくなりませんか? 明確化のポイント: DVCSのデフォルトの動作があるコミットをマージ作成します。なぜそんなに多くの場所が、これらのマージコミットを隠す線形の開発履歴を見たいという願望について語っているのでしょうか?


12
DVCSは継続的な統合を妨げますか?
10人のアジャイル開発者のチームがあるとします。毎日、彼らはボードからタスクを選び、そのタスクに対していくつかの変更をコミットします(1日の終わりまでに)。すべての開発者は、トランクに対して直接チェックインします(Googleスタイル、すべてのコミットはリリース候補であり、機能の切り替えなどを使用します)。 SVNのような集中型CVSを使用している場合、1人がコミットするたびに、ビルドサーバーは変更を統合し、他の9人の開発者の作業に対してテストします。ビルドサーバーはほぼ1日中継続的に実行されます。 しかし、gitのようなDCVSを使用している場合、開発者はタスクを完了するまで待ってから、ローカルコミットをすべて中央リポジトリにプッシュすることができます。それらの変更は、一日の終わりまで統合されません。 このシナリオでは、SVNチームはより頻繁に継続的に統合し、gitチームよりもはるかに迅速に統合の問題を発見しています。 これは、DVCSが従来の集中型ツールよりも継続的なチームに適していないということですか?この遅延プッシュの問題をどのように回避しますか?

5
私は、mercurialの分岐に混乱しているgitユーザーです。小さな変化をどのように追跡するのですか?
以前はgitを使用していましたが、Pythonに貢献したいので、今では水銀を学ぶ必要があり、非常にイライラします。 そこで、私はいくつかの小さなパッチを作成し、それらをローカルのMercurialリポジトリでコミットとして追跡したいと考えました。どうやら水銀の分岐を処理する4つの方法があります。1と4は完全にばかげているように見え、名前付きブランチはヘビーウェイトのようで、1コミットの迅速な修正のためにそれらを使用することになっていないので、ブックマークを使用しました。 今、私のパッチは拒否され、ブックマークブランチの1つをリポジトリから削除したいと思います。OK、gitではブランチを強制削除して忘れてしまうので、ブックマークを削除すると次の問題が発生します。 TortoiseHGは、hg logコミットとdefaultブランチに2つのヘッドがあることを示しています。そして、私が正しく理解していれば、追加のプラグインなしでhgのコミットを削除することはできません。 Mercurialにはハッシュだけでなく、リビジョン番号もあります。いくつかのコミットを追加したので、それ以降にプルされたすべてのコミットには、メインの中央リポジトリとは異なるリビジョン番号が付けられています。 ブックマークをhg update引っ張ってmaster最新のコミットに自動的に移動した後、実行しますが、TortoiseHGでそれを行う方法が見つかりませんでした。 何が間違っていますか?これは正常で予想されるもので、これらの問題を無視する必要がありますか?または、ブランチでどのように作業するのですか?

6
SVNマージの難しさは何ですか?
可能性のある重複: 私はSubversionオタクですが、なぜMercurial、Git、またはその他のDVCSを検討する必要があるのですか? 時々、誰かが分散バージョン管理(Git、HG)は集中管理(SVNなど)よりも優れていると言うのを耳にします。SVNではマージが困難で苦痛だからです。実は、SVNでのマージに問題はなかったし、実際のSVNユーザーによるものではなく、DVCS支持者による主張だけを聞いたことがあるので、TVでの不快なコマーシャルを思い出す傾向があるあなたがすでに持っていてうまく動作するものは使用するのが信じられないほど難しいとふりをすることによって、あなたが必要のないものをあなたに売ろうとします。 そして、常に発生するユースケースはブランチを再マージすることです。これは、これらのストローマン製品の広告を思い出させます。自分が何をしているのかわかっているなら、そもそもブランチを再マージするべきではありません(また、その必要はありません)。(もちろん、根本的に間違っていて愚かなことをしているときは難しいです!) だから、ばかげたストローマンのユースケースを割り引いて、DVCSシステムでのマージよりも本質的に難しいSVNマージには何がありますか?
28 git  svn  mercurial  dvcs  merging 

6
バージョン履歴は本当に神聖なものですか、それともリベースする方が良いのでしょうか?
私はMercurialのマントラ1に常に同意していましたが、Mercurialがリベース拡張機能にバンドルされ、gitで一般的なプラクティスであるため、本当に「悪いプラクティス」と見なされるかどうかは疑問です。使用を避けるのに十分なほど悪い。いずれにせよ、プッシュ後のリベースが危険であることは承知しています。 OTOH、私は5つのコミットを1つにパッケージ化して見栄えを良くすることを目指しています(特に本番ブランチで)が、個人的にはいくつかの機能の一部のコミットを見ることができる方が良いと思いますたとえ気の利いたものでなくても、実験は行われますが、「Xでやってみましたが、結局Yほど最適ではありません。ZをベースとしてZを行う」のようなものを見ると、勉強している人にとっては価値がありますコードベースを作成し、開発者の一連の思考に従ってください。 私の非常に意見のある(馬鹿げた、内臓、偏った)視点は、プログラマーがミスを隠すためにリベースを好むということです... ですから、私の質問は次のとおりです。実際にそのような「有機コミット」(つまり、改ざんされていない履歴)を実際に使用する価値があると思いましたか?どちらを選んでも、なぜそれがあなたのために働くのですか?(履歴を保持するために他のチームメンバーを使用するか、代わりに履歴を変更します) 1あたりGoogleのDVCS分析は、のMercurialに「歴史は聖なるです」。
26 git  mercurial  dvcs 

11
分散型バージョン管理システムのビジネスケース
git / mercurial / bazzrシステムが集中システム(subversion、perforce)よりも優れている理由を検索しましたが、ビジネス上の理由は見つかりませんでした。 DVCSを非技術者に販売しようとした場合、DVCS が利益を上げるためにどのような議論を提供しますか。 私はまもなくマネージャーにgitを売り込みます。subversionリポジトリーの変換には少し時間がかかり、smartgitライセンスの購入にはいくらかの費用がかかります。 編集私はこの質問を集中型と分散型の一般的な議論にしようとしましたが、必然的にgit vs subversionに変わりました。確かに、転覆よりも優れた集中システムがあります。

4
私たちはSubversion Geeksであり、Mercurialの利点を知りたい[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私はSubversionオタクだということを読んだので、なぜMercurialやGitまたはその他のDVCSを検討すべきか、検討すべきではないのか。 関連するフォローアップの質問があります。私はその質問を読み、推奨されるリンクとビデオを読んで、その利点を見ましたが、人々が話している全体的なマインドシフトは見ていません。 私たちのチームは、60のプロジェクトで構成される1つの大きなコードベースで作業する8〜10人の開発者です。Subversionを使用し、メイントランクを持っています。開発者が新しいFogbugzケースを開始すると、svnブランチが作成され、ブランチ上で作業が行われ、完了したらトランクにマージされます。場合によっては、ブランチに長時間滞在し、トランクにブランチをマージして変更を反映することがあります。 Linusがブランチを作成し、二度とブランチを作成しないことについて話すのを見たとき、それはまったく私たちではありません。おそらく週に50〜100のブランチを問題なく作成します。最大の課題はマージですが、私たちもそれをうまく得ています。ブランチのルート全体ではなく、fogbugz case&checkinでマージする傾向があります。 リモートで作業することも、ブランチからブランチを作成することもありません。コードベースのそのセクションで作業しているのがあなただけなら、トランクへのマージはスムーズに進みます。他の誰かがコードの同じセクションを変更した場合、マージが面倒になり、手術が必要になる場合があります。競合は競合です。コードを理解できるほど賢くなければ、ほとんどの場合、どのシステムでもそれを正しく実現できるとは思いません。 ブランチを作成した後、以下の60k +ファイルのチェックアウトには時間がかかりますが、これは使用するソース管理システムの問題です。 DVCSには、私たちにとって大きな助けになるとは思えない利点がありますか?
22 git  svn  mercurial  dvcs 

6
従来のチームに分散バージョン管理を使用する頭痛の種
私は個人的なプロジェクトにDVCSを使用しており、他の人からプロジェクトへの貢献を管理するのが簡単になることを完全に見ることができますが(たとえば、典型的なGithubシナリオ)、「伝統的な」チームにはいくつかの問題があるようですTFS、Perforceなどのソリューションで採用されている集中型アプローチ(「従来」とは、誰もが同じコードに触れる可能性のある、誰も「所有しない」1つのプロジェクトに取り組んでいるオフィスの開発者チームを意味します。) これらの問題のいくつかは私が自分で予見しましたが、他の考慮事項でチャイムしてください。 従来のシステムでは、サーバーに変更をチェックインしようとすると、競合する変更を他の誰かが以前にチェックインした場合、チェックインする前にマージを強制されます。DVCSモデルでは、各開発者がローカルで変更され、ある時点で他のリポジトリにプッシュされます。そのリポジトリには、そのファイルのブランチがあり、2人が変更しました。今、誰かがその状況に対処する責任を負わなければならないようです。チームの指定された人は、すべての競合のマージを処理するためにコードベース全体の十分な知識を持っていない場合があります。したがって、誰かがそれらの開発者の1人にアプローチし、プルしてマージを実行してから再度プッシュするように指示する(または、そのタスクを自動化するインフラストラクチャを構築する)必要がある追加のステップが追加されました。 さらに、DVCSはローカルでの作業を非常に便利にする傾向があるため、開発者がプッシュする前にローカルリポジトリにいくつかの変更を蓄積して、こうした競合をより一般的で複雑にする可能性があります。 チームの全員がコードの異なる領域でのみ作業する場合、これは問題ではありません。しかし、私は誰もが同じコードで作業している場合に興味があります。一元化されたモデルは、競合を迅速かつ頻繁に処理することを余儀なくし、大規模で痛みを伴うマージを行う必要性を最小限に抑えるか、誰かにメインリポジトリを「ポリシング」させるようです。 あなたのオフィスであなたのチームとDVCSを使用している人のために、あなたはそのような場合にどのように対処しますか?毎日の(またはより頻繁に、毎週の)ワークフローが悪影響を受けていると思いますか?職場でDVCSを推奨する前に注意すべきその他の考慮事項はありますか?

4
ソロ開発者にDVCSを使用する利点はありますか?
今、私は自分のサーバー上で視覚的なsvnを使用し、私のマシン上でankhsvn / tortoiseを使用しています。それは十分に機能し、変更する必要はありませんが、DVCSを使用することの利点を確認できる場合は、試してみてください。 ただし、他の人なしでそれを使用しても意味や違いがない場合は、気にしません。 繰り返しになりますが、あなたが唯一の開発者であるときにDVCSを使用する利点はありますか?

3
分岐は継続的な統合を中断しますか?
この記事「成功したGit分岐モデル」は、経験豊富なDVCSユーザーの間で非常によく知られていると思います。 私はhg主に使用しますが、この議論はどのDVCSでも問題ないと主張します。 現在のワークフローは、各開発者がマスターリポジトリのクローンを作成することです。独自のローカルリポジトリにコードを記述し、テストを実行し、すべてがうまくいけばマスターにプッシュします。 そこで、JenkinsのようなCIサーバーをセットアップし、将来のプロビジョニングシステム(シェフ、パペット、アンシブルなど)でワークフローを改善したいと考えています。 実部 さて、上記のモデルはうまく機能しますが、ブランチはCIを壊す可能性があります。機能ブランチは、developmentCIとマージをスムーズにするために、オリジンと同期する必要があります(記事によると、ブランチになります)。 アリスとボブが2つの機能に取り組んでいると言います。しかし、アリスは翌日に行われます。ボブの機能には1週間かかります。Bobが完了するまでに、彼の変更は古くなっています(おそらく、Aliceは一部のクラスをリファクタリング/名前変更しています)。 1つの解決策は、毎朝、開発者がプルmaster/originして、変更があるかどうかを確認する必要があることです。Aliceがコミットした場合、Bobは自分のワークスペースにプルしてマージし、機能ブランチが最新になるようにします。 これは良い方法ですか? これらのブランチは(ローカルクローンではなく)マスターリポジトリに存在する必要がありますか?つまり、すべての開発者がGitHub / Bitbucketのマスターリポジトリにコミット権限を与えて、新しいブランチを作成できるようにする必要がありますか?または、これはローカルで行われますか? 最後に、記事が提示するモデルは、ブランチがと同期していない場合、CIを破壊する必要がありorigin/masterます。ナイトリービルドを実行したいので、開発者は仕事を離れる前にプルしてマージし、各機能ブランチでもCIを実行する必要がありますか?

17
コミットメッセージを書く必要があるのはなぜですか?
コミットメッセージを書く必要があるのはなぜですか?私はしたくないし、私は毎回その愚かだと思う。 名前のないGUIフロントエンドを使用すると、強制的に実行されます。コマンドラインでVCSを使用している場合でも、他の人が毎回それをしていると聞きます。 1日に数回コミットし、機能を終了していない場合、何を書いていますか?私は何度もコミットした後にメッセージを書くだけで、ミニタグの時か、実際のタグを行う時だと感じています。 私は正しいですか、何かが欠けていますか?また、私は分散システムを使用しています

4
ワークフロー:ロックなしでGitでバイナリドキュメント形式を使用する(subversionから移動)
私たちは、さまざまな顧客向けの多数のプロジェクトを持つソフトウェアコンサルタントです。従来はSubversionを使用していましたが、現在Gitへの移行を検討しています。 私たちが作成するドキュメントの大部分はお客様と共有されており(要件、グローバル設計、テスト仕様など)、MS Officeを使用してこれらを作成しています。Subversionでは、「ロック」機能を使用して、同じドキュメントを同時に編集しているユーザーがいないことを確認できます。Gitでは、分散型の性質上、gitにはロックがないため、これを行うことはできません。 ロックは実際には通信メカニズムにすぎませんが、非常に効果的なものです。 現在、私たちのコードと顧客向けのドキュメントは通常、異なるsvnリポジトリの異なるサブフォルダーにあります。gitに移行するときに、私たちが推奨することは何ですか?オプションのセットが表示されます: svnリポジトリをgit 1-on-1に移動します。Officeファイルでロックを使用する代わりに、gitの人々が提案することを行い、何らかの方法でワークフローを変更して修正します。これは、ドキュメント編集のブランチで機能し、オーバーレビューをマージする可能性があります。このアプローチは、プロジェクト管理情報を含むExcelシートなどを分割します。チームメンバーは簡単に編集できますが(これを行うことをお勧めします)、正式なレビュープロセスの対象ではありません コードにはgitを、ドキュメントとプロジェクト管理にはsvnを使用します。これには、よりデザイン性の高い特定のドキュメントが仕様のコードの「近く」にないため、更新を忘れる可能性が高くなるという欠点があります。さらに、誰もが2つのツールセットを使用して理解する必要があります。とはいえ、これはおそらく、顧客と向き合っていない設計ドキュメント用のテキストベースのドキュメントツール(ラテックス、マークダウン、HTMLなど)に移行する絶好の機会です。 1に似git lockていますが、svnロックが行うことを行うコマンドをハックします(読み取り専用フラグを適切に切り替え、何らかの手段でサーバーと同期します)。 DVCSでロックが機能しないという議論は、あなたが完全にオフラインのときでもシステムが機能するはずだからです。SVNロックもオーバーライドできます。それらは通信メカニズムです。なんらかのネットワーク接続がなければ、コンピューターはあまり通信できません。 私svn lockたちのワークフローにどの程度適合しているかに非常に満足しているお店は私たちだけではありませんよね? アイデアやヒントはありますか? /programming/119444/locking-binary-files-using-git-version-control-systemが見つかりましたが、議論はかなり技術的なものです。2人のチームメンバーが同じバイナリファイルを同時に編集するという実際的な問題を解決または回避する方法を探しています。
16 git  svn  dvcs  excel  word 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.