Git dokümantasyon ve proje yönetimi için kullanılmalı mı? Kod ayrı bir depoda mı olmalı?


68

Bir grup projesi için Git deposunu başlatıyorum. O belgeleri depolamak için mantıklı mı koduyla aynı Git depo - Bu git revizyon akışının doğası ile çakışan gibi görünüyor.

İşte sorum / sorularımın bir özeti:

  • Hem kod hem de belgeler aynı depoda kontrol edilirse, Git revizyon tarzı kafa karıştırıcı mı olacak ? Bununla ilgili deneyimleriniz?

  • Git dokümantasyon revizyon kontrolü için uygun mu?

  • Ben am DEĞİL genel olarak Revizyon Kontrol Sistemi veya dokümantasyon kullanılmamalıdır gerektiğini soran - olması gerektiği.

Şimdiye kadarki geri dönüşler için teşekkürler!


Ah, tamam ... açıklama için teşekkürler. Bunun neden bir sorun olacağını anlamıyorum, ancak GIT ile kişisel bir deneyimim yok (sadece teorik bir anlayış), bu yüzden daha doğrudan deneyime sahip birisinin bu soruyu cevaplamasına izin vereceğim.
Flimzy

1
Bunun konuyla ilgili ne olduğunu tam olarak anlayamadım. Yazılım dokümantasyonundan bahsediyorsunuz ve bir DVCS ile iş yapıyorsunuz
Tim Post

Muhtemelen dokümantasyona ve ihtiyacınıza bağlıdır. Zorunluluklara mı ihtiyacınız var ve bunun üstesinden gelebilecek bir biçimde mi? Git gerekli hizmetleri verirse emin olun. Ayrı bir doküman yönetim sistemine sahip olmak ...
Rig

Belgeleriniz düz metinse - sorun değil. Eğer bir ikili format ise, esas olarak ikili formatı anlayan bir versiyon kontrol sistemine ihtiyacınız vardır - bu satıcı en saf haliyle kilitlenir.

Yanıtlar:


53

Belgeleri her zaman SVN'de saklarız. Aslında, tüm kullanım kılavuzumuz LaTeX'te yazılmıştır ve SVN'de saklanmıştır. Özellikle LaTeX'i seçtik, çünkü metin tabanlı bir dil ve satır satır farklılık göstermesi kolay.

Ayrıca, gerektiğinde Microsoft Office .doc dosyaları, forma sayfaları, .zip dosyaları vb. Gibi bazı metin biçimli olmayan dosyaları da saklıyoruz ... diffs.

Önemli olan, dokümantasyonunuzun iyi organize edildiğinden emin olmaktır, böylece insanlar ihtiyaç duyduklarında dokümantasyonu (ve kaynağı) bulabilir (ve güncelleyebilir).


11
Microsoft'un bir mağazasındaysanız, TortoiseSVN, MS Office'in satır satır farklılıklarını destekler.
Phil

2
İkili doc formatlarını düşürmek dünyayı daha iyi bir yer yapar. Belgelerin düz metin olduğu düşünüldüğünde, DVCS ile ilgili de gerçek bir sorun olmamalıdır.
Kai Inkinen

Ah, ve ilk defa TortoiseSVN ve doc dosyalarını duydum. Bunun gelecekte herhangi bir zamanda Kaplumbağa [AnyDVCS] ile sonuçlanıp sonuçlanmayacağını merak ediyorum.
Kai Inkinen

@Phil: TortoiseSVN bunu nasıl başarır? Doc-diff görüntüleyici SVN istemcisiyle entegre mi, yoksa bağımsız olarak kullanılabilir mi?
Flimzy

1
Harika bir seçenek Pandoc kullanmaktır, böylece belgelerinizin çoğu Markdown'dadır, ancak çok önemli bitler hala TeX kullanabilir. Markdown'dan LaTeX'e geçtiği için sonuçlar aynı görünüyor. Ancak, bu aynı zamanda farklı formatlara aktarmanıza ve kaynağın okunmasını kolaylaştıracaktır.
Tikhon Jelvis

22

Belgelendirme için hangi formatı kullandığınıza bağlı. Metin tabanlı bir şey ise, her şey yolunda.

Git ayrıca ikili içeriği saklayabilir ve revizyonları izleyebilirsiniz, ancak diff çıktısı mantıklı olmaz.

Perldoc pod gibi belgeleri de kodda saklamak da mümkündür, java da bunun için bazı format / açıklamalara sahiptir.


Metin olmayan belgeleri saklamak mümkün olsa da, yerine metin koyarsanız git git daha iyi olacaktır. Kelime (veya benzeri) belgelerin nasıl
dağılacağını

Word formatlarını ikiliden XML'e taşıdı.
Cledoux

3
@ karategeek6 Word'ün 'XML' formatı okunaklı değildir. Ve bir metin satırı, yaklaşımda bile olsa bir Word'ün XML satırına karşılık gelmez. Bu yüzden ikili olabilir.

Word'e çıktınızı sıkıştırılmamış XML biçiminde kaydetmesini söyleyebilirsiniz. Seçin Save As, ardından Word XML Document (*.xml)varsayılan yerine seçin Word Document (*.docx). XML oldukça karmaşık, bu nedenle değişikliklerin kolayca okunabileceğini garanti etmiyoruz, ama en azından ikili olmayacak.
Kyralessa

> ancak diff çıktısı bir anlam ifade etmeyecektir. Farklılık olması durumunda, bir belgenin 2 revizyonunu yan yana açıp gözlerimizle karşılaştırabiliriz :)
Luke

14

Git'i veya başka herhangi bir sürüm kontrol sistemini belgeleme amacıyla kullanmakta bir sorun olabileceğini düşündüğünüzü hayal edemiyorum. Kaynak kodda olduğu gibi, belgelerin de tam bir geçmişi olmalı ve gerekirse daha önceki bir sürüme dönme yeteneğine sahip olmalıdır. Bir sürüm kontrol sistemi bunun için idealdir.


6
Yalnızca belgeler metin biçimindeyse. İkili bloblar sürüm kontrolünden tam olarak yararlanamıyor.

2
@ ThorbjørnRavnAndersen: Yine de, ikiliye özgü bir versiyonlama sistemine sahip olmadığınız sürece, ikili dosyaları bile kendi başlarına Git'te saklamak daha iyidir.
Tikhon Jelvis

@TikhonJelvis İkili dosyaları git içine koymanın iyi bir fikir olup olmadığını sormadım - eğer orijinal eserlerse, öyle. Ancak, Word belgelerinde "git diff" çalıştırmayı deneyin.

@ user1249: 2 revizyonu masaüstüne "dışa aktarabilirsin" diyebilirim, my_docs_rev15.docx ve my_docs_rev14.docx diyebilirsin, sonra yan yana açabilir ve gözlerin ve beyninle karşılaştırabilirsin, zor değil :)
Luke

14

Belgeleri saklamak için bir çeşit Versiyon Kontrol Sisteminin kullanılmasının bir eğitici olmadığı açıktır. Sorunun daha ilginç olan kısmı, kaynak kod olarak AYNI konumundaki belgeleri saklamak iyi bir fikir midir? Buradaki olası sorun, bu durumda kod ve belgeler için farklı erişim ayrıcalıkları belirlemenin zor olabileceğidir. Ve birçok iş durumunda, insanların pazarlama veya BA departmanları gibi dokümanlara erişmeleri gerekecek, ancak kaynak kodlarına erişmeleri gerekmeyecek.


3
Evet, "aynı konum" yönü bu sorunun temel kısımlarından biri!

Aynı konum, onu yönetebiliyorsanız iyidir, çünkü kabile bilgisine (nereye bakacağını bilmek) veya eşyaların nerede olduğunu aramaya gerek kalmaz.
hızla_

Kodlara erişmeleri gerekmeyebilir, ancak bu erişime sahip olmaları için zarar vermemelidir. Bakmak zorunda değiller. Sırlar genellikle sürüm kontrolünde olmamalıdır.
bdsl

9

Çalıştığım firmada SVN'ye dokümantasyon koyuyoruz. Ancak, birkaç çatışmadan ve paylaşmaya ihtiyaç duyduktan sonra, onu Mediawiki'ye taşımaya karar verdik.

İlk başta trac idi, bundan sonra Mediawiki'ye taşındı çünkü kullanımı daha kolaydı ...

SVN'deki asıl sorun, SVN için yetkilendirme sistemine sahip olmamızın nedeni oldu.


2
Vikipedi'nin kullandığı wiki motoru olan Mediawiki'yi kastetmiyor musunuz?

@Martijn, öyle sanırım
Teo Klestrup Röijezon

@Martijn: Evet, düzenlendi
confiq

Bir SCM'ye ders olmayan birçok dosyayı göndermek yerine kişisel tercihle daha çok ilgisini çekmeyi tercih ederim. Bununla yapabileceğin çok şey var. Foswiki ve web sitesi tabanlı / proje tabanlı şablonlarını özellikle seviyorum. Birisi problemlerden dolayı wiki kullanmaya karar verdiğine sevindim :) +1.
Oeufcoque Penteano

9
  • Bir depoda sadece kaynak koddan daha fazlasına sahip olmak çok iyi bir şey.

    Tüm kaynaklarınızı birlikte gruplandırır ve projeyi dağınık bir dosya koleksiyonundan ziyade tutarlı, merkezi bir varlığa dönüştürür. Katkıda bulunanlar / çalışanlar "x özelliğinin belgelerini nerede değiştiririm?" Göndermek yerine her şeyi nerede bulacağını biliyorlar e-postalar.

    İşleri düzenli tutmak isteyeceksiniz. Ayırmak için bir sistem oluşturun srcdan imagesitibaren docs. .gitignoreDepoyu ve geçmişi temiz tutmak için her zaman bir dizine bir ekleyebilirsiniz . Git taahhütlerinin dosya tabanlı olması nedeniyle, * kaynak değişikliklerini dokümantasyon değişikliklerinden istediğiniz kadar güçlü bir şekilde birleştirebilirsiniz.

  • Diğerlerinin de söylediği gibi Git, metin tabanlı olduğu sürece dokümantasyon sürümleri için mükemmeldir.

  • Tamamen katılıyorum; dokümantasyon, kodun yanında yazılı olarak verilmelidir.

Güvenilirliğim GitHub kullanıcısı olmaktan ve bir projeye katkıda bulunmaktan ve diğerlerini keşfetmekten kaynaklanıyor. Tecrübelerime göre, eksiksiz ve birleşik bir projenin yarı eksik bir projeden anlaşılması kolaydır. Tüm projelerimi mümkün olduğunda tek bir dizinde tutmaya çalışıyorum.


* Bu tam olarak doğru değildir, çünkü işlenecek dosyanın bölümlerini belirtmenin yolları vardır ( işte bir örnek ).


4

Buraya benzer bir soru ile geldim. Bir proje ile ilgili tüm materyalleri aynı depoda tutmanın temelde hiç akıllıca olmadığı bir SVN ortamından geliyoruz. SVN'nin doğası gereği, havuzun bölümlerini kolayca kontrol edebilirsiniz, böylece sadece kaynak koduna ihtiyacınız varsa (örneğin bir web sitesi dağıtımı) sorun değil.

Git ile işler farklı. Bir ödeme her zaman kök düzeyindedir, bu nedenle her şeyi aynı depoya koymak istiyorsanız, her zaman aynı dizin yapısına sahip olursunuz. Karşılaştığım bir yaklaşım, her şeyi ayrı dallara koymak, yani kod dallarınız (normal ana, geliştirme vb. Dallarınız olur) ve kendi ayrı dizin yapısına sahip bir doktora dalınız var. Emin değilim, ancak bu en iyi fikir, ancak sorunuzun temelinde olduğunu düşündüğüm sorunu çözen bir öneri.


Farklı dizin yapılarına sahip farklı dallar, çok kötü bir kod kokusuna sahipti. Hepsini tek bir depoda bırakarak, katkıda bulunanların daha kolay bir kod ve belge karışımı eklemesini kolaylaştırırdım. Aslında, okuryazar programlama (Google bu!) Bunu gerektirir.
tbc0

Paketleri dağıtırken, tüm sunuculara çalıştırılabilir dosyaları indirmeme izin veren .deb stilinin bir parçasıyım, geliştirme kutumda da belge paketleri var.
tbc0

1

Dahili dokümanlar için wiki kullanıyorum ... revizyon PLUS ile öne çıkarak erişim / kolay düzenleme. Dokümantasyon senkronizasyon dışındaysa, o zaman ve orada güncelleyin. Son kullanıcı dokümantasyonu için, Madcap Flare gibi profesyonel bir araç düşünün. Dokümanları paylaşmak, oluşturmak ve dönüştürmek için bir XML lehçesi kullanırlar.


-1

Kodda, düşünceler genellikle satır satır ayrılır. Yumuşak hat sargılı belgeler yazma eğilimindeyim. Bu dosyaları işlediğimde, satırlar tüm paragraf uzunluğundadır. Bu okumak için çok kullanışlı değil git diff. Google sayfasını bulup bu sayfayı bulduğumda çözmeye çalıştığım sorun buydu. Beni tanıştırdığı için Arne Hartherz'e teşekkürler git diff --word-diff. Daha da git diff --color-wordsiyi olabilirsin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.