9

私は継続的なバージョン管理システムを見たことがありません - 正式なチェックインを待つのではなく、開発したコードの変更を保存するものです。変更はもちろん「未チェックイン」として保存されますが、バックアップのために保存され、実際に正式なチェックインを行う前に他の人が見ることができます.

私はこれを見たことがないので、それまたはそれに似たものが存在するかどうか、そしてそれが良い考えであるかもしれないし、そうでないかもしれない理由について疑問に思っています.

現在、プログラマーはソース コード管理をコードのパケットの統合と考えていますが、これらのパケットを小さくして継続的に統合しないのはなぜでしょうか?

-アダム

4

16 に答える 16

13

現在、プログラマーはソース コード管理をコードのパケットの統合と考えていますが、これらのパケットを小さくして継続的に統合しないのはなぜでしょうか?

DVCS はすでに基本的にこれを行っていると言えます。分散化されているからではなく、コミットが非常に高速だからです.. git を使用すると、SVN よりもはるかに頻繁にコミットできます.. また、「チャンク」または特定のコミットが簡単になりますコードの (git add -iまたはを使用してgit gui) であり、一般に、完全なファイルではなく、コード行の追跡にはるかに重点を置いています (Subversion のような「従来の」VCS として)。

また、あなたが言ったように、gitが本質的に機能する方法は、「変更はもちろん「チェックインされていない」として保存される」ことを意味します..コミットすると、変更はローカルであり、別の方法でリモートマシンにプッシュしますコマンド..保存するたびにコミットし、必要に応じてそれらを単一のコミットにリベースできます。

「継続的なバージョン管理」を行うツールについては、次のようなシェルスクリプトを使用して非常に簡単に行うことができます..

while [ 1 ]; do
   git add -a && git commit -m "Autocommit at $(date)";
   sleep 10;
done

同様のことを行うスクリプトCACM ( github ) があります。

[CACM] は特定のディレクトリを監視し、すべての変更をスタンドアロンの Git リポジトリにコミットします。

使用するには、次のようにします。

cacm --repo dir_of_git_repo --watch dir_to_watch

なぜそうする必要があるのか​​ わかりません.. VCSの使用について最も役立つことの1つは、(最後のコミット以降に)変更したものの差分です。一定の/自動化されたコミットを持つことは単なるノイズになるようです..

また、「e」テキスト エディターには興味深い機能があります。分岐を使用して元に戻す履歴を視覚化します。スクリーンショット付きのブログ投稿があります。

于 2009-03-27T05:07:06.733 に答える
11

定期的な自動保存の仕事は、バージョン システムの仕事ではなく、編集者の仕事です。バージョン システムに新しいバージョンが表示された場合、それは他のバージョンからの意味のある変更を表す必要があります。

于 2009-03-27T04:39:04.027 に答える
6

Eclipse には、まさにそれを行う「ローカル履歴」と呼ばれる機能があります。保存間でソース ファイルのコピーが保持されます。削除されたフォルダも追跡します。それは私のお尻を何度も救いました。ローカル ヒストリーは、ローカル マシンでのみ発生する低レベルのバージョン管理として表示できます。もちろん、これの欠点は、別のマシンで作業する場合、ローカル履歴が異なることです。

于 2009-03-27T04:38:20.937 に答える
5

bazaargitMercurialなどの配布バージョン管理システムを使用できます。その後、ローカルでコミットできます。

于 2009-03-27T05:11:24.947 に答える
4

さまざまな DVCS 用の inotify ベースのプラグインをいくつか見てきましたが、それらは非常にスマートなだけです。本当に理想的なのは、リポジトリをコピー オン ライト ファイル システムに保存することです。これにより、これらの頻繁に実行される細分化された (そして不変の) バージョンのファイルが DVCS の外部に保持されます。

他の人が言ったように、私は多くの小さな約束をすることを好みます. DVCS を使用すると、トランクやマスター ブランチの破損を心配する必要はありません。プッシュは作業が終わってから行うだけで済みます。ファイルを編集する際に有害なリビジョンが作成される心配はありません。

Linux では、ext3cowを使用して HG/Git リポジトリを保存しています。これにより、あなたが説明したような機能が得られます。悲しいことに、Linux を超えて移植可能なものを私は知りません。クレイジーなチームが Python で何かを思いつくかもしれません。

この質問は以前に何度か出てきたので (それぞれ異なるコンテキストで)、ext3cow のような (しかしポータブルな) ものが必要であることは明らかです。それでも、特に巨大なツリーでは、DVCS 自体が肥大化することは望ましくありません。

DVCS ではなく、ファイル システムからこれを要求する必要があると思います。

于 2009-03-27T05:26:05.037 に答える
3

Subversion autoversioningのようなものですか?

免責事項: 私は自動バージョン化が開発にとって良いアイデアだと言っているわけではありませんし、私が個人的にやろうとしているわけでもありませんが、技術は存在します。

于 2009-03-27T04:25:22.577 に答える
3

すべての変更をチェックインする必要はありません。連携できる変更のアトミック セットをチェックインする場合。メソッドにパラメーターを追加して保存し、それをチェックイン (および CI ビルドを実行) した後、メソッドへの呼び出しをまだ更新していないため、ビルドが中断されることは望ましくありません。

于 2009-03-27T04:29:18.637 に答える
2

JetBrains が開発した継続的なバージョン管理システムに興味があるかもしれません。まだ公開されていませんが、マルメで開催された JetBrainsDay の基調講演でいくつかの機能を紹介しています: http://new.livestream.com/jetbrains/jetbrainsday1/videos/29348962

于 2013-09-09T06:50:05.923 に答える
2

ここに別のアプローチがあります。ほとんど毎日のように、何かが動かなくなってしまい、その理由がわからないという状況に遭遇します。数分巻き戻して、どのファイルにどのような変更が加えられたかを確認します。したがって、継続的なバージョン管理の必要性に同意します。

同時に、毎日何千もの小さな変更をリポジトリにチェックインしたくないのも事実です。

わかりました、これがあなたがすることです。両方を使用しますが、混合しないでください。ソース管理はチーム全体で使用する必要があり、時々チェックインします。同時に、ローカルの個人用ファイル バージョン ソフトウェアを実行して、小さな変更をすべて保存し、実際に情報を簡単に使用できるようにします。

それでおしまい。私はHistory Explorerの開発を手伝ったので使用していますが、他にもあります。

于 2009-11-08T05:50:25.417 に答える
2

必要に応じて、すべての行または文字を git のような DVCS でコミットできます。一般に、DVCS を使用する場合は、できるだけ頻繁にコミットして、git bisect などのツールで問題を簡単に突き止められるようにすることをお勧めします。説明した効果が必要な場合は、保存するたびにコミットするように選択したエディターをスクリプト化できます...実際には、それは少し多すぎると思います.

于 2009-03-27T04:24:52.063 に答える
2

この目的のために開発ブランチをセットアップし、品質保証レベルのブランチにマージする前に、開発者が作業中に変更をコミットするようにする人もいます。主要な開発ブランチに変更をコミットしてマージする前に、自分のブランチで主要な変更作業を行っている開発者を配置することもできます。したがって、分岐はこれに対処できます。

于 2009-03-27T04:26:30.077 に答える
2

私はEclipseがそうするか、保存するたびにこのようなことをしていたと思います。バグを特定しようとしているときに、コードがハッキングされてバラバラになってしまったことが何度かありました。

于 2009-03-27T04:27:45.660 に答える
1

Rational ClearCaseには、動的ビューの概念があります。Windowsでは、開発ビューはマップされたドライブとして表示されますが、コードの変更は、保存を押すとすぐにサーバー側に保存されます。それはあなたが探しているものですか?

ご想像のとおり、この方法で作業することにはトレードオフがあります。したがって、上記のSiの回答のように、これは推奨事項ではありません...

于 2009-03-27T13:09:44.517 に答える
1

Java でのプログラミング経験が数年以上ある私は、Visual Age が開発プロセスにもたらした斬新なアプローチを今でも (懐かしく) 覚えています。Visual Age は、ソース コードに対して非ファイル アプローチを採用していました。コードはリレーショナル データベースに格納されました。通常、単一のメソッドを示すビューで作業します。また、完全なファイル ビューもありましたが、あまり使用しませんでした。

バージョン管理に関しては、保存するたびにバージョンが生成されます。バージョン番号/名前を使用して、メソッド、クラス/インターフェイス、パッケージ、またはプロジェクト全体を明示的にチェックポイントできます。また、メソッド レベルでソースをより細かく制御することもできました。Visual Age から多くの機能を継承し、現在ではコードのすべての「保存」をローカルに保存する履歴機能を備えた Eclipse で作業を開始すると、一歩後退したように感じずにはいられませんでした。

于 2009-03-27T05:18:29.767 に答える
1

Dan が述べたように、IBM Visual Age IDE は、保存したソース コード ファイルのすべてのバージョンを保持していました。ただし、このアプローチは IDE に限定されません。DEC VMSオペレーティング システムは、バージョン管理されたファイル システムで同様のアプローチを採用しました。VMS では、各ファイルの完全な名前にバージョン番号が含まれており、ファイルを保存するたびに、以前の最大番号より 1 大きいバージョン番号で新しいコピーが作成されました。

どちらのアプローチも、分岐 (さらに言えば、同じソース ファイルで作業する複数のユーザーを容易にするために特別に設計された機能) がないという点で、今日私たちが知っているバージョン管理とはまったく一致しません。しかし、どちらも人的エラーに対するバックアップの目的を果たします。これは、私にとってバージョン管理の最も有用な側面です。

于 2009-03-27T05:46:40.523 に答える
0

ベスタはどうですか?

http://www.vestasys.org/

于 2010-01-05T14:07:34.797 に答える