ドキュメントとプロジェクト管理にGitを使用する必要がありますか?コードは別のリポジトリに配置する必要がありますか?


68

グループプロジェクトのGitリポジトリを起動しています。コードと同じGitリポジトリにドキュメントを保存するのは理にかなっています -これはgitリビジョンフローの性質と矛盾するようです。

ここに私の質問の要約があります:

  • コードとドキュメントの両方が同じリポジトリにチェックインされている場合、Gitリビジョンスタイルは混乱するでしょうか?これでの経験?

  • Gitはドキュメントのリビジョン管理に適していますか?

  • 私はありません一般的にはリビジョン管理システムは、またはマニュアルのために使用すべきではないかどうかを尋ねる-それがなければなりません。

これまでのフィードバックに感謝します!


ああ、わかりました...説明をありがとう。なぜそれが問題になるのかはわかりませんが、GITの個人的な経験はありません(理論的な理解だけです)。
Flimzy

1
私はこれがどのように話題になっているのかよくわかりません。ソフトウェアのドキュメントとDVCSのコミットについて話している
ティムポスト

おそらくドキュメントとあなたのニーズに依存します。差分が必要ですか、それを処理できる形式ですか?gitが必要なサービスを確実に提供する場合。独立したドキュメント管理システムを持つビート
リグ

ドキュメントがプレーンテキストの場合-結構です。バイナリ形式の場合、バイナリ形式を理解するバージョン管理システムが基本的に必要です。これは、最も純粋な形式のベンダーロックインです。

回答:


53

ドキュメントは常にSVNに保存されます。実際、ユーザーマニュアル全体はLaTeXで記述され、SVNに保存されています。LaTeXを選択した理由は、テキストベースの言語であり、行ごとの差分を簡単に表示できるためです。

また、必要に応じて、Microsoft Office .docファイル、スプレッドシート、.zipファイルなどの非テキスト形式のファイルも保存します...差分

重要なのは、ドキュメントがきちんと整理されていることを確認することです。そうすれば、必要なときにドキュメント(およびソース)を見つける(および更新する)ことができます。


11
Microsoftショップの場合、TortoiseSVNはMS Officeの行ごとの差分をサポートしています。
フィル

2
バイナリdoc形式をドロップすると、世界がより良い場所になります。oドキュメントがプレーンテキストであることを考えると、DVCSにも問題はないはずです。
改Inkinen

ああ、TortoiseSVNとdocファイルについて初めて聞いたので、+ 1しました。それが将来いつでもTortoise [AnyDVCS]で終わるかどうか疑問に思います。
改Inkinen

@Phil:TortoiseSVNはどのようにこれを達成しますか?doc-diffビューアはSVNクライアントと統合されていますか、それとも独立して使用できますか?
Flimzy

1
クールなオプションは、Pandocを使用してドキュメントのほとんどがMarkdownにあるようにすることですが、重要な部分は引き続きTeXを使用できます。MarkdownをLaTeXにコンパイルするため、結果は同じように見えます。ただし、これにより、さまざまな形式にエクスポートできるため、ソースが読みやすくなります。
ティコンジェルビス

22

まあ、それはドキュメントにどのフォーマットを使用するかによります。それがテキストベースの何かである場合、それはすべて良いです。

Gitはバイナリコンテンツも保存でき、リビジョンを追跡できますが、差分出力は意味がありません。

また、perldoc podのようなコード自体にドキュメントを保存することもできます。javaには、このためのフォーマット/注釈もあります。


テキスト以外のドキュメントを保存することもできますが、代わりにテキストを保存する方がgitのほうがはるかに優れています。diffの単語(または類似)をする方法を知っているのdiffドライバーの話があったのDocumentsが、私はそれが実装されたかどうかわからない
スヴェレRabbelier

私は、Wordの形式をバイナリからXMLに移行しました。
クレドゥー

3
@ karategeek6 Wordの「XML」形式は人間が読めません。また、1行のテキストは、近似であってもWordのXMLの1行に対応していません。したがって、バイナリーである可能性もあります。

出力を非圧縮XMLで保存するようにWordに指示できます。を選択しSave AsWord XML Document (*.xml)デフォルトの代わりに選択しますWord Document (*.docx)。XMLはかなり複雑であるため、変更が簡単に読み取れるという保証はありませんが、少なくともバイナリにはなりません。
キラレッサ

>しかし、diff出力は意味をなしません。:)差分の包み、我々はサイドで文書側の2リビジョンを開くことができ、私たちの目で比較する
ルーク

14

ドキュメントにgitや他のバージョン管理システムを使用することに問題があると思われる理由を想像することはできません。ソースコードと同様に、ドキュメントには完全な履歴があり、必要に応じて以前のバージョンに戻す機能が必要です。バージョン管理システムはこれに最適です。


6
ドキュメントがテキスト形式の場合のみ。バイナリBLOBは、バージョン管理の恩恵を完全には受けません。

2
@ThorbjørnRavnAndersen:それでも、バイナリ固有のバージョン管理システムがない限り、バイナリファイルだけをGitに保存する方が良いでしょう。
ティコンジェルビス

@TikhonJelvisバイナリファイルをgitに入れるのは良い考えかどうかは疑問に思いませんでした-それらが元のアーティファクトである場合、そうです。ただし、Word文書で「git diff」を実行してみてください。

@ user1249:2つのリビジョンをデスクトップに「エクスポート」できます。たとえば、my_docs_rev15.docxとmy_docs_rev14.docxを並べて開き、目と脳で比較します。それほど難しくありません:)
Luke

14

ある種のバージョン管理システムを使用してドキュメントを保存するのは簡単です。質問のより興味深い部分は、ソースコードと同じ場所にドキュメントを保存することをお勧めしますか?ここで起こりうる問題は、その場合、コードとドキュメントに異なるアクセス権限を設定するのが難しいかもしれないということです。また、多くのビジネスケースでは、マーケティングや学部など、ソースコードではなくドキュメントにアクセスする必要があります。


3
はい、「同じ場所」の側面がこの質問の重要な部分の1つです。

同じ場所であれば、部族の知識(どこを見るべきか)を知ったり、物の場所を探しに行ったりする必要がないため、管理できれば便利です。
すぐに

彼らはコードにアクセスする必要はないかもしれませんが、そのアクセス権を持っていることを害するべきではありません。彼らはそれを見る必要はありません。とにかく、秘密は一般にバージョン管理されるべきではありません。
bdsl

9

私が働いている会社では、ドキュメントをSVNに入れています。ただし、競合がほとんどなく、共有する必要があるため、Mediawikiに移動することにしました。

最初はtracでしたが、その後Mediawikiに移行したので使いやすくなりました...

SVNの主な問題は、SVNの承認システムがあった原因です。


2
ウィキペディアが使用するウィキエンジンであるMediawikiを意味しませんか?

@Martijn、そうだと思います
テオクレストラップロイジェゾン

@Martijn:はい、編集
confiq

私は、SCM以外の多くのファイルを送信するのではなく、Wikiに固執しますが、個人的な好みに関係しています。それを使ってできることはもっとたくさんあります。FoswikiとそのWebサイトベース/プロジェクトベースのテンプレートが特に好きです。誰かが問題のためにwikiを使用することに決めたことを嬉しく思います:) +1
ウーフコックペンテアーノ

9
  • リポジトリに単なるソースコード以上のものがあることは非常に良いことです。

    すべてのリソースをグループ化して、プロジェクトを分散したファイルのコレクションではなく、まとまりのある一元化されたエンティティにします。貢献者/従業員は、「機能xのドキュメントをどこで変更しますか?」を送信するのではなく、すべての場所を知っています。メール。

    物事を整理しておく必要があります。srcからを分離するシステムがimagesありdocsます。いつでも.gitignoreディレクトリにa を追加して、リポジトリと履歴をきれいに保つことができます。Gitのコミットはファイルベースであるため、*ソースの変更をドキュメントの変更から自由に分離できます。

  • 他の人が言ったように、Gitはテキストベースであればドキュメントのバージョン管理に最適です。

  • 同意します; ドキュメントは、コードと一緒にバージョン管理する必要があります。

私の信頼性は、GitHubユーザーであり、1つのプロジェクトに貢献し、他の多くのプロジェクトを調査することから生まれました。私の経験では、完全で統一されたプロジェクトは、半分欠けているプロジェクトから簡単にわかります。可能な限り、すべてのプロジェクトを単一のディレクトリに収めるようにしています。


* コミットするファイルの部分を指定する方法があるため、これはあまり正確ではありません(ここに1つの例があります)。


4

私も同じような質問で来ました。プロジェクトに関連するすべての資料を同じリポジトリに保持するのは基本的に簡単なSVN環境に由来します。SVNの性質上、リポジトリの一部を簡単にチェックアウトできるため、ソースコード(たとえば、Webサイトの展開)だけが必要な場合は問題ありません。

Gitでは、状況は異なります。チェックアウトは常にルートレベルにあるため、すべてを同じリポジトリに配置する場合は、常に同じディレクトリ構造になります。私が遭遇したアプローチの1つは、すべてを別々のブランチに配置することです。つまり、コードブランチ(通常は通常のマスター、開発などのブランチ)と、独自の個別のディレクトリ構造を持つdocブランチがあります。それが最良のアイデアであるかどうかはまだわかりませんが、それはあなたの質問の根底にあると私が想像する問題を回避する提案です。


根本的に異なるディレクトリ構造を持つ異なるブランチには、非常に悪いコードの匂いがします。すべてを1つのリポジトリに残し、寄稿者がコードとドキュメントの組み合わせをより簡単に追加できるようにします。実際、リテラシープログラミング(Google that!)が要求しています。
-tbc0

パッケージを配布するとき、私はすべてのサーバーに実行可能ファイルをダウンロードできる.debスタイルに偏っていますが、開発ボックスにはドキュメントパッケージもあります。
-tbc0

1

私は内部ドキュメント用にwikiを使用しています...リビジョンに加えて、目立つアクセス/簡単な編集を取得します。ドキュメントが同期していない場合、その場で更新します。エンドユーザー向けのドキュメントについては、Madcap Flareなどのプロフェッショナルツールを検討してください。ドキュメントの共有、作成、変換にXMLダイアレクトを使用します。


-1

コードでは、思考は通常、行ごとに分けられます。私はソフトラインラップでドキュメントを書く傾向があります。これらのファイルをコミットすると、行は段落全体になります。で読むのはあまり役に立ちませんgit diff。それが、Googleでこのページを見つけたときに解決しようとしていた問題です。Arne Hartherzを紹介してくれてありがとうgit diff --word-diffgit diff --color-wordsもっといいかもしれません。

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