SVNは、ドキュメント、個人ファイル、その他のソースコード以外の用途に非常に役立つことがわかりました。バージョン管理システム全般について、他にどのような実用的な用途がありますか?
14 に答える
バージョン管理が他の非ソースコードの目的で使用されているのを見てきました。
- スキーマファイル-実際のスキーマを表すXMLスキーマファイルのセット
- コンテンツファイル-特定の形式で表されたコンテンツ。これは、ソース管理を使用してVStudioのデザイナーに関連付けられ、履歴を許可し、データベースとの対話なしですべてをロールバックします。
どちらの場合も、基本的に冗長なファイルであり、「データベース内のテキストレコード」ではなく、これらのファイルをソース管理に含める主な理由は次のとおりです。
- バージョンを比較する機能が必要な可能性のあるファイル
- 履歴(複数のユーザーが作業しているため)
- 以前のバージョンにロールバックする機能
- 特定のラベルを取得することによるラベル付けとリリース
- Team Foundation(TFS)を使用する場合、作業項目などを含むスクラムテンプレート全体
- データベースは含まれず、上記すべてのための追加の開発はありません
私の初期の仕事の1つでは、DNSリビジョン管理にCVSを使用していました。これは主に、ゾーンファイルをバックアップするための安価で汚い方法でした。
また、ホームディレクトリにバージョン管理システムを使用している人の話も聞いたことがあります。
学校の最終学期に、私は 2 つのクラスを受講しました。それぞれのクラスには、学期の終わりに期限が来る、時間のかかる大規模なプロジェクトがありました。どちらも、学期中にいくつかの長い論文を必要としました。私は両方のクラスで SVN を多用して、すべての論文とプロジェクトに加えたすべての変更を追跡しました。
私は書くことに関しては「一度にすべてを書く」タイプの人であり、プロセスを複数のセッションに分散させようとすると、思考の流れを失う傾向があります. 自分の論文の最新版と差分を取ることができたので、軌道に乗るのがずっと簡単になりました。
私はLaTeXで多くのドキュメントを編集しているので、SVNを使用してtexファイルや画像などを保存しています。Diffを実行するのに便利で、災害が発生した場合に私を救ってくれることを願っています。
一般的に、ビルドプロセスに必要なものはすべてソース管理に入れます。発生する唯一の問題は、たとえばマーケティングなど、他の部門によって準備されたリソースがあるかどうかです。
パスにbinというフォルダがあり、sysinternalsなどの便利なユーティリティが含まれています。私はsvnを使用して、これらをさまざまなマシンで最新の状態に保ちます。また、PowerShellスクリプト、vimrcファイルなどは、一元化しておくのに最適です。
個人的なものに使用することすら考えたことはありませんでしたが、ソフトウェアプロジェクトでは、後日再生成できないほとんどすべてのものをチェックインします(この例には、実行可能ファイルやコード生成ドキュメントが含まれます)。ドキュメントは常にチェックインされます。顧客へのプレゼンテーションはチェックインされ、デモがあった場合はデモに使用されたコードベースとともにタグ付けされます。
SVNとCVSは、技術者以外のユーザーにとっては「友好的」ではないと思いますが、エンジニアリング以外のプロジェクトでのバージョン管理の使用の可能性について興味があります...
複数の人間の目で表示されるほとんどのドキュメント。たとえば、アナリストが要件ドキュメントを更新し、最後に見たときから何が変わったかを確認したい場合など、プロジェクト計画フェーズで非常に役立ちます。Wikiにもこの機能があります。これらの目的でSharePointを使用しますが、ベンダーを選択してください。
私はよく使用するファイルにバージョン管理を頻繁に使用します。なぜなら、私は 1 台のラップトップ、職場のデスクトップ マシン、および多くの作業を行う自宅のデスクトップ (週に 2 日、自宅で仕事をしている) を持っているからです。
それらのいずれかでの新しいセッションは、一連のチェックアウトを更新する「開始」と呼ばれるスクリプトで始まり、VCS に何かをコミットするか、少なくとも変更を表示する「停止」と呼ばれるスクリプトで終了します。
私はそれを使用します:
- 私の 1 ファイルの Getting Things Done タスク リスト (私が使用するツールyagtdを参照)
- 私のパスワード データベース (Joel の質問に答えて、その提案を StackOverflow ポッドキャストに送信する必要がありました)
- プロジェクトに関するランダムなメモとファイルのすべて
- たくさんのスプレッドシート (個人的なことを毎日追跡するものを含む)
- いくつかの画像 (私が使用する Web アバターなど)
さらに、システムとユーザー アカウントの両方の構成ファイルを管理するために、Subversion の上に何かを書きました。私は非常に多くのマシンに非常に多くのアカウントを持っており、シェル/vim/... の設定方法を常に再学習することにうんざりしていたので、それらのほとんどをバージョン管理にも保存しています。これには、電子メールの署名ファイル、$HOME/bin にある一連のシェル スクリプトなどが含まれます。
私は、目的を問わず、ほぼすべてのドキュメントにリビジョン コントロールを使用しています。
私は Mercurial を使用しているので、特定のディレクトリに新しいリポジトリを設定するのは単純な「hg init」の問題であり、新しい Subversion リポジトリを設定するよりもはるかに手間がかからないことがわかりました。
また、ファイルを同期する必要があるあらゆる状況で RCS が優れていることもわかりました。現在、すべての同期ニーズに対して、rsync の代わりに RCS を使用しています。バックアップの作成も簡単です。リポジトリを別の場所/マシン/ディスクに複製すると、その場所に変更をプッシュするだけで済みます。これは、デフォルトのプッシュ リポジトリを使用するとさらに簡単です。リモートリポジトリで変更しない場合は、デフォルト以外の設定についてあまり心配する必要さえありません.
私にとって最も素晴らしいことの 1 つは、SSH アクセスできる任意のシステムで同期、バックアップなどを実行できることです。(まあ、彼らが私のために Uni で mercurial をインストールしてくれるなら、そうすることができました!)
私の会社の開発グループは、ほぼすべての電子ドキュメントに Subversion を使用することを目指しています。これは、Excel ドキュメントなど、結合できないファイルを "ロック" できるかどうかに依存します。SVN は「requires-lock」機能を提供し、ロックの取得、変更、コミットのワークフローはかなり単純です。
ソフトウェアエンジニアは参加していますが、機械エンジニアからの抵抗があります。たとえば、Excel の同時共同編集機能を使用したいと考えています。それらは、ロックの取得、変更、コミットのワークフローに適応していません。
TortoiseSVN を使用すると、Word ドキュメントを比較できます。これは非常に便利です。明らかにマージもサポートしていますが、私はその機能を試すにはあまりにもチキンでした...
git や Mercurial などの DVCS を真剣に検討したいと思います。しかし、バイナリ ファイル形式 (つまり、結合できない) ファイルをロックできなければ (したがって、そのようなファイルの集中型モデルのようになります)、および/または使用するバイナリ ファイル形式を結合できない限り、私の会社の使用法には適合しません。
すべてのソフトウェア会社が、独自のドキュメント形式用の優れた差分およびマージ ツールを提供してくれることを願っています。これにより、独自のドキュメント形式のバージョン管理システムの価値が高まります。
私は、ソース管理、ビルド環境、インストーラー スクリプト、およびすべての優れた開発機能に Subversion を使用してきました。また、バイナリ ファイル (この場合は古い Excel および Word ドキュメント) の非技術ユーザー用のリポジトリもセットアップしました。マージ機能が失われたことを考えると、問題なく機能しました。しかし、2 人か 3 人が編集した膨大な量の情報を、すべてのユーザーが非常に簡単に入手できるようにしました。また、編集を行う前に更新する方法 (必要に応じてロックする) と、競合に対処する方法 (更新したものを確認し、コピーを削除して更新を実行する) に関する簡単な指示により、リポジトリの問題をかなりうまく処理できました。彼らが実際にそれを好きになったことがあるかどうかはわかりませんが. :)
はい、git に doc ディレクトリがあります。Todo リスト、カレンダー、その他いくつかのドキュメントが含まれています。
SVN を使用して、Asterisk VOIP サーバーの構成ファイルへの変更をチェックインします。複数のサーバーのそれぞれに対応するフォルダーを持つ 1 つのリポジトリがあります。そのフォルダーには、/etc/asterisk の内容全体が含まれています。