SCM'siz kod kalitesini nasıl koruyabilirim?


110

Bir devlet kurumunda çalışıyorum. Burada kullanılan teknoloji ve yazılım geliştirme yöntemleri oldukça eski modadır.

Tonlarca depolama alanına sahipler ancak buradaki işlerin çoğunu otomatikleştirmek için kullanılan uygulamaları tutmak ve sürdürmek için uygun alan yok.

Kurum GIT veya SVN gibi SCM yazılımı kullanmama izin vermedi.

Kod kalitesini korumak ve daha sonra uygulamalara yeni özellikler ekleyebilmek için en iyi yaklaşım hangisidir?

Kodda yaptığım değişiklikleri kırmadan nasıl hatırlayabilirim?

EDIT: Bahsetmeyi unuttum, bilgisayarların her biri için ağ sürücüleri var ve bir şekilde bu ağ sürücüleri dönemler boyunca yedekleme yapıyor ya da kaydediyor. Ancak, çalışmamı kurtarabilmeyi ve mevcut kodu bozmadan yeni özellikler ekleyebilmeyi sağlayan bir plan yapmazsam, SCM çözümünden daha büyük bir avantaj yoktur.

EDIT: Birçok kişi Taşınabilir Git'i önerdiğinden beri daha fazla bilgi eklemek zorundayım. Visual SVN sunucusunu yüklemeyi denedim, ancak yükleme için yönetici ayrıcalıklarına sahip olmadığım için başarısız oldu. Ayrıca normal Git kabuğu indirmeyi de denedim, ancak güvenlik duvarı veya ağ ayarları Git indirme sayfasına erişmeme izin vermedi. Taşınabilir Gmail’i e-posta adresime taşınabilir Git göndermeyi bile denedim. Google, paketteki exe dosyasını algıladı ve çalışma bilgisayarıma taşınabilir Git sürümünü indirmeme izin vermedi. Bahsetmem gereken başka bir şey de, kurum aracılığıyla bilgisayarlara uygulanan ağ politikası, USB depolama aygıtlarının kullanılmasına izin vermiyor. Akıllı telefonu şarj etmek veya küçük hoparlörler gibi bazı aygıtları çalıştırmak için USB bağlantı noktalarını kullanabilirsiniz. Ayrıca bazılarının da söylediği gibi, İnternet bile izin verilmeyen bilgisayarlar var.


4
gmail filetype filtresini, .mp3, .zip gibi "iyi bilinen" bir uzantı olarak değiştirerek atlayabilirsiniz.
Pac0

2
Kendime soruyorum, neden bu soruyu hallediyor hala 2017 yılında bu kadar olumlu oyu var - Gerçekten çok korkuyorum
Ole K

9
Başka bir iş bul. Bu insanlar mantıksız dinozorlar. Uygun modern araçları kullanmanızı isteyen bir yerde çok daha fazla iş tatmini bulacaksınız.
Rob K,

5
Devlet Kurumunun SCM kullanmaması için hiçbir sebep yoktur. Aslında, muhtemelen bir SCM kullanmayarak çeşitli süreç ve denetim kurallarını çiğniyorlar. O açıdan saldırmanı öneririm
jk.

2
@jk gerçekten iyi bir noktaya getiriyor . Bir kusur para kaybına neden olursa, dolandırıcılığı mümkün kılıyorsa veya birinin yaralanmasına ya da can kaybına neden olursa, denetçiler size kuzudaki aslanlar gibi inecektir - ve biri işini kaybedecektir. Sen büyük olasılıkla Bu üst yönetim emekli maaşını sizler için riske atmaz.
Greg Burghardt,

Yanıtlar:


175

Kaynak kontrolünün oynadığı rolleri basit bir şekilde üç basit araçla çoğaltabilirsiniz:

  • Yedekleme yazılımı (Taahhüt / Check-in)
  • Klasörler (Şubeler)
  • Bir dizini KDiff3 (dalları birleştirme) gibi bir araç kullanarak iki dizin arasında birleştirme

Temel olarak iş akışınız şu şekilde olur:

  1. Yeni bir klasör oluşturun (yeni dal)
  2. Dosyaları yeni bir klasöre (yeni dalda) mevcut bir klasörden (mevcut dalda) kopyalayın
  3. Bu klasörü yedekleyin (yeni şubeyi oluşturmayı tamamlayın)
  4. Biraz iş yap
  5. Yeni klasörün yedeğini alın (kesin)
  6. Bir dizin bir klasörden diğerine birleştirme yapın (birleştirme)
  7. Diğer klasörde başka bir yedekleme yapın (birleştirme işlemini gerçekleştirin)

SVN veya TFS gibi daha monolitik kaynak kontrol sistemleri temel olarak bunu sahne arkasında sizin için yapar.


Şimdi, gerçek şu ki bu bir Otobüs Şirketi gibi, sürücülerine aküsü olan otobüsleri süremediklerini, sürücüleri otobüsten aşağıya itmeye zorladıklarını ve ardından otobüsü başlatmak için debriyajı çıkardıklarını söylüyorlar. ve mevcut yönetimin bir otobüs garajı çalıştırma hakkında hiçbir şey bilmediğini gösterir. Başınız sağolsun.

Ama en azından otobüsü çalıştırabilirsin.


41
Bu aslında kısıtlamaları verilen doğru cevap. Aynı zamanda VCS'ler bir şey haline gelmeden önce de yaptık.
Blrfl

35
+1, bunun kolay karşı argümanı satırlarda olacak olsa da ... delikli kartlarla da programladık, tekrar yapmamız gerektiği anlamına gelmez
Newtopian

25
+1 - soruyu cevaplamak için. İlk işimde kaynak kontrolü yoktu ve bu şekilde işler yaptık. Not: sadece ikimiz vardı, iyi anlaştık ve çoğunlukla ayrı projeler üzerinde çalıştık ve yine de çok kötü bir fikirdi. Herhangi bir ek takım karmaşıklığı ve bir kabus olurdu.
Bob Tway,

18
OP'nin KDiff3 gibi bir araç yükleyebileceğini / indirebileceğinden şüpheliyim. Eğer git yerel olarak kuramazsa, yerelde çalışan başka bir yere gidebileceğinden şüpheliyim.
Ivan

5
@Ivan: Yorumları okuduktan sonra OP bir Linux makinesindeymiş gibi görünüyordu. Bu teknoloji yığınını kullanan kuruluşların, normal masaüstü yapısının bir parçası olarak kullanılabilen çok sayıda fark / birleştirme aracına sahip olduklarını gördüm ve kdiff3 oldukça yaygındır. Dizin birleştirme yapan başkaları da olabilir mi? Veya OP, dosyaları birer birer birleştirerek sıkışmış (ick!). Ama evet, bu durum sadece düz berbat.
Greg Burghardt

139

Her ne kadar fikir birliği kesinlikle bu şirket için işe yaramayacak olsa da , sorunuzu gerçekten cevapladığına inanmıyorum.

SCM'yi gerçekten değiştiremezsiniz .

Tam gelişmiş bir sistemin normal zillerine ve ıslıklarına ihtiyacınız olmayabilir. Örneğin, şirket bir sunucu isteğini reddedebilir, ancak yerel bir SCM kullanımına izin verebilir. Git'ten hoşlanmamalarına rağmen, yıkılmaya izin verebilir (veya başka bir versiyonlama sistemine).

Elbette bir soru var: Meslektaşlarınız ne kullanıyor veya önceki çalışanlar neler? Sahip oldukları ilk Yazılım Geliştirici iseniz, ihtiyacınız olan kaynaklar için çok zorlama zamanınız geldi .

Sonunda, şirketiniz rolünüze ve deneyiminize saygı duymuyorsa ve ihtiyacınız olan araçlara izin vermiyorsa, o zaman kaynak kontrolü eksikliğinden daha kötü (ve daha stresli) sorunlarla karşılaşacaksınız.


11
Üzerinde çalıştığım uygulamalar tek kişilik projeler. Ve hayır, buradaki ilk programcı ben değilim. Birçoğu buraya geldi ve gitti.
Vlad

7
Ayrıca bazı eski meslektaşlarımda, bu eski çirkin yapılandırılmış uygulamaları kullanmaya çalıştıklarında, “Neden her yıl böyle şeyler yapıyoruz” yüzüyle hayal kırıklığı görüyorum.
Vlad

6
@Vlad: Git'in veya SVN'nin bir ağ sürücüsünden daha fazlasına ihtiyaç duymadığının farkında mısın? VB6 ve tek kişilik projeler için, muhtemelen ikili dosyalarla ilgilenmek için daha basit olan SVN ile çalışacağım. Son VB6 programını değiştirene kadar bunu birkaç yıl boyunca yaptım.
Doktor Brown,

24
@Vlad "Birçoğu buraya geldi ve gitti." Onlara bu şirket kültürünün muhtemelen ciroları ile bir ilgisi olduğunu söylemenin saygılı bir yolunu bulun.
jpmc26

26
Kendine hatırlatma: Şirketin röportajda hangi SCM'yi kullandığını sorun. Bilmiyor ya da hiçbirini söylemiyorsanız, onlara söyleyin, zaman ayırdığınız ve zamanımı boşa harcadığınız için teşekkürler.
joojaa

25

Temel olarak, asgari günümüz iş akışı, metodoloji ve araçların kullanılmasının yetersiz yetersizliğine yoğunlaşan bir yönetim problemi vardır (kuruluşunuz yazılım geliştirme sürecinin temellerini , örneğin V-modelini anlamıyor ). Bu yaygındır ( Peter'ın ilkesi hakkında okuyun ).

BTW, sanırım 2017’nin sonunda Paris’teki son SNCF demiryolu olayının da benzer bir nedeni var (yüksek yönetim seviyesinde toplam yazılım kültürü eksikliği, dolayısıyla bir günden fazla bir süredir büyük bir Paris tren istasyonunun tıkanması; elbette çok yetkin) BT SNCF'de ekipler, ancak büyük kararlara danışılmadı). Birkaç Avrupa yazılım endüstrisini toplam yazılım kültürü eksikliği ile adlandırabilirim ve ABD'de bile benzer şeyler bulabileceğime eminim.

Asıl konu şudur: Kod bazında yalnız mı çalışıyorsunuz, yoksa meslektaşlarınızla mı çalışıyorsunuz?

Yalnız çalışıyorsanız, Git'i bilgisayarınızda yerel olarak kullanabilir ve kodunuzu (ve muhtemelen deponuzu bile .git) düzenli aralıklarla (bu harici depolama alanına) yedekleyebilirsiniz . Yarım günden fazla çalışmayı asla kaybetmediğinizden emin olun (bu nedenle verilerinizi düzenli aralıklarla ve güvenilir bir şekilde yedekleyin).

(Ben en az ikisi biliyor varsayalım gitve svnve teknik üstünlüğünü biliyoruz ki git; hatta gibi bazı aracı yüklemeye izin verilmez ise gitiş bilgisayarınızda bu sorunla ilgili patronun ile ciddi bir görüşme yapmak gerekir: İhtiyacınız Harici açık kaynak araçlarını kurma yeteneği ve yetkisi (ve bunları akıllıca ve dikkatlice ve bilinen güvenlik açıkları olmadan seçme, yapılandırma ve yükleme sorumluluğunuzla birlikte gelir )

Birkaç meslektaşınızla çalışıyorsanız (sanırım onlardan daha azına sahipseniz), hepsini bir sürüm kontrol sistemi kullanmaya ikna etmeniz ve muhtemelen bunu derhal (ve ortak) patronunuza söylemeniz gerekir. Bazı makinelerin (belki de bazı eski masaüstlerini, belki de kendi masaüstünüzü) bir git sunucusu olarak kullanılacağına karar verebilir (ya da basit bir şekilde kabul eder). Git sunucuyu en azından her saat başı yedeklenecek şekilde kesinlikle bu sunucuyu ayarlamanız gerekir; ekibinizin bir saatlik çalışmasını kaybetmeyi göze alamazsınız (ve patronunuz hakkında konuşmanız gerekir).

BTW, Linux'u seviyorum ve Linux'u bir gitsunucu görevi gören makineye kurmanızı tavsiye ederim ; o zaman gitperiyodik yedeklemeleri kurmak ve yapılandırmak (bir crontabişte) çok kolaydır; Bir gitsunucunun, onu kullanan Windows istemcileriyle Linux çalıştırabileceğini unutmayın. Mümkünse geliştirme makinenizi Linux'a geçirmenizi bile öneririm. Bu "daha ucuz" ve daha geliştirici dostu

Ancak bir SCM kullanmanız gerekir. Patronunuza farklı bir soru sorabilirsiniz: ekibiniz mevcut bir SCM kullanmalı mı, tekerleği yeniden icat edip kendi SCM'nizi mi yapmalı? Patronlar genellikle tekerleği yeniden icat etme fikrine karşıdır. Tekerleği yeniden icat etmenize izin verilirse, patronunuza en az bir yıl boyunca tam zamanlı bir iş olduğunu söyleyin (muhtemelen patronunuzu ağlatacak, sonra bariz yolu kabul edeceksiniz) ve kendi SCM'nizi yaparken eğlenin. Olası bir durumda, mevcut SCM sistemlerini incelediğinizden emin olun ve SCM sisteminizi ücretsiz bir yazılım aracı yapın (diğer takımlar tarafından kullanılmalı ve geliştirilmelidir).

Sen gerekebilir hazırlamak (birkaç gün boyunca) bir kesin ve spesifik bir SCM ihtiyacı için tartışmalarını öncelikle meslektaşları için, sonra hemen patron için:. Ayrıca somut çözümler önerdiğinizden emin olun (bazı masaüstünde bir git sunucusu çalıştırma veya bir "eski" sunucu çalıştırma ve saatte bir crontabiş aracılığıyla yedekleme yapma gibi )

İş bilgisayarınıza izinsiz olarak ( dışardan, hatta açık kaynaklı) herhangi bir yazılım yüklemeyin (çoğu ülkede, özellikle de Devlet için hassas BT çalışmaları için, izinsiz bir yazılım yüklemek yasal olarak bir suçtur; İşe ya da hapse girerseniz .... bunu yapmaya yetkili olduğunuzdan emin olun; belki de yazılı olarak veya en azından e-posta ile izin alarak kıçınızı örtün).

(ya duruma göre bir vaka sormanız gerekecek ya da çalışma bilgisayarınıza yasal olarak açık kaynaklı veya ücretsiz bir yazılım olan herhangi bir yasal yazılımı kurabilmeniz için kuruluşunuzdan güven almanız gerekir ).

PS. Teknik olarak nasıl inşa yapılandırmak, daha sonra kullanmak yükleme içingit -veya diğer birçok özgür yazılım VCS- (serbest yazılım kaynak kodundan) bir makinede (hatta yönetici izni olmadan) bir olduğu çok farklı soru (başka yerde sorulmasını). Ve bunun gitiçin yeterli kaynağa (zaman, disk alanı, bazı C derleyicileri, vb.) Sahip olmanız şartıyla herhangi bir yönetici izni olmadan kullanmak mümkündür .

Visual SVN sunucusunu yüklemeyi denedim, ancak yükleme için yönetici ayrıcalıklarına sahip olmadığım için başarısız oldu.

Bu, bazı spesifik ayarlama ve derleme ile çözülebilir olduğu gitya svngelen özgür yazılım kaynak kodu gitveya Subversion -not sadece bir ikili paket-(ve ayrıca kaynak kodu arasında bağımlılıkları ); Teknik olarak bu nasıl yapılır farklı bir soru (ancak bu tür teknik sorular başka bir yere gitmeli ). Elbette, gityapmadan önce kaynak kodunu derlemek için (patronunuzdan) izin istemeniz gerekir. Bu kaynak kodunu dışarıdan çalışma bilgisayarınıza aktarmayla ilgili pratik detaylar (eğer böyle bir çözümü kabul ederse) hakkında size ya da onunla tartışacaksınız.


5
Github’a erişip Git’i kaynaktan inşa edebilir misiniz?
Willem

5
@RobertHarvey Güvenlik her zaman işinizi yapmaktan daha düşük bir öncelik olmalıdır (kuruluşun işi özel olarak değil). Çünkü hiçbir şey yapmazsan en güvende olacaksın. Ve sonra hükümet kurumunuzu dağıtır, çünkü hiçbir şey yapmaz (veya çoğu devlet kuruluşundan bile daha azını yapar). Ya da hepiniz işinizi kaybediyorsunuz çünkü kuruluş iflas ediyor (devlet tarafından finanse edilmezse). Ya da öylesine.
immibis

6
@ immibis: Üzgünüm, ama bu saman adam. Tam güvenlik diye bir şey yoktur ve uygun bir güvenlik sağlarsanız yeterli güvenlik, verimliliğinizi feda etmenizi gerektirmez. Etkili güvenliğe sahip olmanın (mantıklı iş ürünü kullanım önlemleri verilen) en basit ve en etkili yolun, yalnızca İnternet bağlantısını kesmek olduğunu unutmayın.
Robert Harvey,

8
@RobertHarvey IP adresinizi çalmak bir çalışanı durduramaz. Çalışanlarınızın IP'nizi çalmasını engellemenin en kolay yolu çalmak için IP'ye sahip olmamak. İkinci veya üçüncü değil, birinci dereceden güvenlik olduğunu söylediniz, bu durumda verimlilik ikinci veya üçüncü öncelik olmalı ve bu nedenle güvenlik lehine azaltılmalıdır.
immibis

3
@ immibis, bu ortamlarda çalışma deneyimi olmayan biri gibi konuşuyorsunuz. Ayrıca, yasal olarak sizi kilitleyebilecek ve IP'lerini çalarsanız anahtarı atabilecek müşterilerden de bahsediyorsunuz. Bilginin yanlış kullanılmasının (IP'nin tamamen çalınmasının dahi) kuruluşa ciddi zarar verebileceği bir ortamdır. Tabii ki güvenlik birincil endişedir. Bu ortamda çalışmayı bir acı haline getirir.
Berin Loritsch

11

Yapacağım ilk şey , hükümet ajansının (muhtemelen BT departmanının) neye karşı olduğunu özellikle belirlemek . Depolama alanlarına sahipler ancak sunucular için VM'leri barındırmanın bir yolu yoksa, sorun BT departmanının SVN veya GIT sunucusuna hayır demesi olabilir ve bu büyük bir ayrım olabilir. Sorun köken ülkesiyse - yani yabancı varlıklar tarafından yaratılan araçlara güvenmiyoruz - bu farklı bir sorundur.

Onlarla bir şey yapmaya hazır olmadan önce bebek projelerinde yaptığım dosya sisteminde GIT'yi tamamen çalıştırabilirsiniz. GIT ayrıca yüklemek için yönetici ayrıcalıkları gerektirmez.

Git'i herhangi bir nedenle kesinlikle kullanamıyorsanız, size sunulan birkaç seçeneğiniz vardır:

  • Eğitim: Sürüm kontrolüne izin vermeyerek , önemli riskler getiriyorlar. Daha problemli olduğu kanıtlanan değişikliklerden vazgeçme yeteneğine ihtiyacınız var. Devletin para ve zamanından tasarruf etme yeteneğine ihtiyacınız var ve SCM bunu yapıyor. Nasıl olduğunu açıkça açıklayabilmelisin. Muhtemelen ana fikri gerçekten eve götürmek için alternatiflerin bir analizini yapmanız gerekir.
    • Bir alternatif Git'e ev sahipliği yapacak
    • Başka bir dosya sistemi Git
    • En az bir tane seçin, ancak ikiden fazla alternatif SCM aracı seçmeyin
    • ve son olarak sürüm kontrolü olmadan çalışmak nasıl bir şey
  • 70'lerin dönemi gelişimini git: bir nedeni var patchve diffçok uzun zaman önce (80s) yapılmıştır. Versiyon kontrolünü olanaklı kılan teknolojilerdi.

70'li yılların gelişimi neye benziyor? Güzel değil, ama böyle başladık. Uygulamalar çok daha küçüktü. Temelde bazı ortak şeyleri vardı:

  • Altın standart kavramı vardı . Bu, özelliklerin eksiksiz olduğu ana kaynak koduydu.
  • Bir Yapılandırma Yönetimi (CM) ekibi vardı. Sorumlulukları, geliştirme aşamasından altın standardına doğru olarak değişiklik yapmaktı. İhtiyacın olan patchve difftakımın yerini aldığın yer burası .
  • Kaynak kodun yerel bir kopyasından çalıştınız. Bir özelliği tamamen bitiriyor ve entegre etmeleri için CM ekibine gönderiyorsunuz. Genellikle ekli bir belge vardır, böylece yeni dosyalar oluşturulur ve eski dosyalar silinir.
  • Ardından, tümleştirme işleminden kaynaklanan hataları düzeltin.
  • Başka bir özelliği veya hata düzeltmeyi eğlendirmeden önce altın standardının yeni bir kopyasını alacaksınız.

Temel olarak, yanlış giden şeyler için çok fazla potansiyele sahip, hataya açık bir süreçtir. "Dallanma" fikrinin uygulanması kolaydır, ancak yönetilmesi gereken bir kabustur. Asıl mesele, kaynak kodun çok fazla kopyası olduğunda, üretim için doğru temelin ne olduğunu anlamak zordur. Pratiklik uğruna tek dişli olmalısın.

Alternatif analizinize dahil etmeniz gereken şey budur.


Hayır, buradaki insanlar BT departmanını işin çok önemli bir parçası olarak görmüyorlar. Bunu ikincil olarak görüyorlar, sadece diğer bölümlere hizmet eden bir bölüm. Böylece acı çekebilir :)
Vlad

4
@Vlad, kısıtlı olan sunucu kaynaklarının mı yoksa uygulamanın kendisinin mi araştırıldığını araştırdınız mı? Eğer sunucu kaynakları ise git'i dosya modunda kullanabilirsiniz ve zor yoldan yapmaktan çok daha iyi olacaktır (yani 70'lerin dönemi).
Berin Loritsch

5
Müşterilerime kararları ile ilgili maliyetlerin ne olduğunu öğrenmek için çok yol aldım. Alternatiflerin analizi, bu kararların sonuçlarını iletmenin mükemmel bir yoludur. Elbette, çok fazla iş var, ancak birkaç gün süren dokümantasyon ve düzenleme size daha sonra haftalarca kalp ağrısı ve baş ağrısından kurtarabilir.
Berin Loritsch

9

Yorumlarda bahsettiğiniz kısıtlamalar göz önüne alındığında (örneğin: Git indirme sayfasına, Windows platformuna ve Visual Studio 2005'i kullanamıyorum), her ikisi de benzer bir durumda daha önce kullandığım 2 seçeneği görebiliyorum:

  1. Emerson'un önerdiği gibi Visual SourceSafe'i kullanın . Birkaç yıl önce VS 2005'i kullanan bir ekiple çalıştım, şirketin geri kalanının çoğu Linux / Unix'te standart sürüm kontrolü kullanıyordu ve CM için mutlu bir şekilde Visual SourceSafe kullanıyorlardı. Bu noktada oldukça eski moda, ama hiç yoktan iyidir.
  2. Hiçbir şey yapmadan daha iyisinden bahsetmişken, kendimi de benzer şekilde bağladım. VSS'yi bile kullanamıyorsanız (belki de eklenti yüklü değil mi?) Ve yeterli depolama alanı bulunduğunu söylediğinizden, bazılarını kullanmanıza izin verilir. El ile dosya tabanlı bir sürüm kontrol protokolü uyguladım. Her iş gününün sonunda, kod tabanımı yeni tarih damgalı bir dizine kopyalarım. Önceki işe (veya geri) geri dönmem gerekiyorsa, ihtiyacım olan değişikliği bulmak için önceki tarihli dizinlere bakardım. Visual Studio'yu kullanabildiğiniz için, birkaç saat içinde, muhtemelen dizin oluşturma ve dosya kopyalama işlemlerini otomatikleştirmenize yardımcı olacak basit bir araç yazmak için VS 2005'i kullanabilirsiniz.

1
İlk seçeneğin için + 1'ledim. İkinci seçeneğin beni kusmak istememe neden oluyor. Ama anlıyorum.
jpmc26

@ jpmc26 Bazen 1990'larda kısıtlayıcı bir ortamda çalışıyorsunuz (veya 1990'larda sıkışmış gibi hissediyorsunuz ) ve kelimenin tam anlamıyla başka bir seçeneğiniz yok. Hoş değil, hiç yoktan iyidir.
Ogre Mezmurlar33

8

Tonlarca depolama alanı var

Kararın üzerine senin kullanmana izin var mı?

Öyleyse , hiç olmadığı kadar iyi olan bir dosya sistemi uzak havuz oluşturabilirsiniz. Dezavantajı ise proje büyürken itiş yapmanın yavaşlamasıdır, çünkü gitdeğişiklikleri aramak için tüm depoyu indirmesi gerekir ...

şu ana kadar, bilgisayarlar sıradan bir kullanıcı gibi davranıyor, üçüncü parti yazılımı yüklememi yasaklıyor.

gitayrıca , $ HOME veya% USERPROFILE% yolunuza yükleyebilmeniz için taşınabilir bir uygulama olarak gelir .


Sonuç olarak: onların bir SCM 1 kullanarak beni yasaklamasına izin vermem . "Özelde" kullanırdım. Sonuçta hiç kimse kodunuzun bir yerde kontrol edilip edilmediği ile geliştirilip geliştirilmediğini söyleyemiyor

1 ) kullanıyorum başladığımda gitbenim müşteri oldukça yavaş ve güvenilmez farklı SCM tercih önce bazı yıllar (bir SCM için NoGo çeşit sonuçta (o;) ben kullandım. gitDiğer SCM üstünde "özel olarak" bir ağ paylaşımında "dosya tabanlı" bir uzaktan kumanda ile ve yalnızca ürünün yeni bir sürümü piyasaya sürüldükten sonra SCM'sine iade edilir.


3
Git’i indirebileceğiniz siteyi açamıyorum. Ve Visual SVN Server'ı kurarken, bu PC'deki izinlerle son adımda başarısız olur.
Vlad

3
@Vlad, şirketinizin güvenlik duvarı tarafından sınırlandırılmış mı? Bir USB çubuğu bağlamaya izinli misiniz? Bu bağlantı erişilebilir mi? github.com/sheabunge/GitPortable/releases/download/…
Timothy Truckle

3
Akıllı telefonumu şarj etmenin dışında USB depolama aygıtları takmama izin verilmedi.
Vlad

18
Bunları ne kadar makul olursa olsun, şirket bilgisayarına bir şeyleri koymaya karşı korumaları atlatmak sizi kovar ve muhtemelen sizi yasal bir sıkıntıya sokar. Yapma!
Sebastian Redl

2
@Vlad demek, git için yükleyiciye erişmenin bir yolu olarak. Sebastian Redl'in dediği gibi, önce makinenizde yazılım çalıştırmanıza izin verildiğinden emin olun.
Baldrickk,

7

Çevreniz

Öncelikle, birçok yorumda ve cevapta gösterildiği gibi karamsar olmazdım. Evet, bu "taş devri", ama daha kötü durumlar var. Genel çalışma ortamınız (iş arkadaşları, konum, ödeme, ilginç programlama çalışmaları vb.) İyi ve zevkinize uygunsa, elbette buna bağlı kalın. BT ile ilgili olarak, budur. Bu sadece devlet kurumlarında değil, aynı zamanda bankacılık, sigorta ya da güvenlik veya çok eski yapılar üzerinde çok yoğun bir odaklamanın olduğu yerlerde de olur.

Bir USB çubuğu takmak ve bazı .exe dosyalarını çalıştırmak, başka yerlerde sonlandırmanın hemen nedeni olabilir, bu nedenle herhangi bir şeyi atlatmaya çalışmanızı önermem.

Git'i bir kez daha dene

Şimdi seçiminize. Git yerine svn yerine git'i şiddetle tavsiye ederim. Zaten tek kişilik projeler yapıyorsanız, git .gituygulama kökünüzün içindeki yerel bir dizindir , başka bir şey değildir.

Patronunuzdan / BT'nizden bir "SCM" isteyin, ancak gitdaha hızlı ve daha kaliteli geliştirebilmeniz için makinenize özellikle kurmalarını isteyin . Eğer emin onlara açık bir şekilde gösterin değil sen emin, başka bir yerde kodunuzu itmek isteyen değil yere çalıştıran bir sunucuya ihtiyacınız ve bu edeceğini değil önemli uzay veya bakım süresini kullanın.

Git sizin için hızı ve kaliteyi artıracak, çünkü daha fazla güvenle çalışabilirsiniz (çünkü yaptığınız değişiklikleri geri alabilirsiniz) ve aynı anda birden fazla dalda çalışmanıza izin verir. Yani, büyük bir görev üzerinde çalışıyorsanız ve acil ilginizi gerektiren bir şey gelirse, yeni bir şubeye geçebilir, hızlıca düzeltebilir ve sonra uzun süren göreve geri dönebilirsiniz.

Manuel olarak yapmak

Sadece mümkün değilse, tabii ki manuel kaynak kontrolü yapabilirsiniz. Kodunuzu kendiniz kopyalayarak el ile "etiketler" oluşturun (belki de tarih / saat ile yeni bir dizin oluşturabilir ve neyin değiştiğine dair kısa bir açıklama yapabilirsiniz). Yalnızca değişikliklerinizi değil, aynı zamanda değiştirdiğiniz dosyaları ve belki de daha fazla ayrıntıyı içeren ayrıntılı listeleri olan bir Changelog'u saklayın.

İşinizi kopyalayarak tekrar "dallar" oluşturun ve birleştirme zamanı geldiğinde, bazı keyfi "diff" veya "diff3" araçlarını kullanarak yaratıcılığınızı yaratın. Bulmak.

Bunların hepsi size zaman kazandıracaksa, bir SCM'yi taklit etmenin gerçekten değip değmeyeceğine dikkatlice bakın. Eğer fark ederseniz ise buna değer, sonra tekrar patronunuzla konuşun. Ona manuel SCM'nizin faydalarını gösterin (sadece "tüm eski çalışmalarımın bir kopyasını aldım" değil "ama" XYZ hatası olduğunda hemen sebebini buldum, 5 yayımdan önce "). O zaman onlara bunun ne kadar hızlı olacağını söyleyin git.

Açıkçası, eğer bu sizi delirtiyorsa, iş aramak her zaman bir seçenektir.


5

Bence buradaki birçok insan bu sorunun "devlet kurumu" nu kaçırıyor. Bazı devlet ağları, kendilerine izin verilen yazılımlar konusunda çok katı düzenlemelere sahiptir ve bu kuralları çiğnemek suçlu, hatta suçlu bir suçtur. Yazılımı yüklerken bazı onaylanmış hareketler alıp almadığınızı görmek için yönetimi zorlardım. Kovboyluğa gidip kendime bir şey yerleştirmem. Linux / UNIX kullanıyorsanız, bkz. RCS (ci / co komutları) veya SCCS (sccs komutu) yüklü. Bunlar, oldukça standart olan eski SCM araçları. Güzel değil ama aşağıya yazacağımdan daha iyi. :)

"Çok" disk alanınız olduğundan, bir kaynak ağacı oluşturun. SCM'nin küçük ölçekte temelleri nelerdir? Değişiklikleri kontrol edebilme, nelerin değiştiğine bakma, bir şeyler etiketleme ve gerekirse eski sürümlere geri dönme. Kaynak ağacın üstündeki bir seviye, elinizde ne olduğuna bağlı olarak aşağıdakileri yapan bir Makefile veya script oluşturun (bunlar Linux / UNIX aromalı, Windows komutları farklı olacaktır)

check-cp-a kaynak ağacı kaynak ağacı tarihi (en azından dakikaya, eğer kaynak ağacı gibi-20171205115433 gibi)

statü yap - diff -R kaynak ağacı kaynak ağacı ağaç tarihi | daha az (burada küçük bir mantık olurdu, en son yedeklemenin varsayılanları veya bir sürüme karşı farklılaşmak için bir tartışma

make etiketi - ln -s kaynak ağacı-tarih-yayın1.0

geri alma - rm -r kaynak ağacı && cp -a kaynak ağacı-tarih kaynak ağacı


1
Windows komutları farklı olurdu - Windows komutlarında eşdeğeri sağlarsanız, sorunun iyi bir cevabı olacağını sanırım; Burada kullanılan işletim sisteminin pencere olduğuna inanıyorum (VS 2005 yüzünden).
Emerson Cardoso,

1
FWIW, diff Windows'ta bulunmuyor. En yakın şey fc.exe gibi gözüküyor, sadece iki dosyada çalışıyor (dizinlerde değil). Her şey basit meslektaşları var.
fede s.

4

Onlara sat

Bu yorumu bıraktınız :

Onlar nasıl bilmiyorum ama dönemlerinde yedeklemeler oluşturur bir ağ sürücüsü var. Evet. Kullanıyorum ve uygulamalarımı orada saklıyorum.

Üstünüze gidin ve bu damarda bir şey söyleyin:

Patron, uygulamaları ağ sürücüsüne koyduğumuz bir sistemimiz olduğunu fark ettim ve bir tür hizmet yedekleri alıyor ve geçmişi takip ediyor. Bana öyle geliyor ki bunu yaparak kendi kaynak kontrol sistemimizi uyguluyoruz. Muhtemelen çok fazla alan boşaltabilir ve SVN veya git gibi özel bir kaynak kontrol yönetim sistemine geçerek tüm sistemi daha kolay hale getirebiliriz. Bolca fayda sağlarız: Tarihsel sürümleri daha basit yedekler, zaman içinde dosyalarda ne gibi değişiklikler yapıldığını anlama araçları (hata ayıklama için çok yararlı bilgiler), hataları geri almanın kolay yolları ve farklı insanların değişikliklerini birleştirmenin kolay yolları.

Bu tür sistemleri daha önce kullandım ve özel kurulumumuzun gerçekleştirdiği görevde çok iyiler. Onlarla hata yapmak mevcut sistemimizden çok daha zor. Ayrıca çok olgun ve yaygın kullanılan teknolojilerdir; Bu araçlar 20 yıldan fazla bir süredir yaygın olarak kullanılmaktadır. Üstelik, en popüler yazılımı lisanslama masrafı ödemeden kullanabiliriz.

Bir müşteri ve sunucu seçmekte yardımcı olmaktan ve onları kurmaktan memnuniyet duyarım. [insert estimate here]Bir makineyi alabilmem için sadece saatler sürmesi bekleniyor . Herhangi bir makine, ağ üzerinden erişebildiğimiz sürece eski bir masaüstünü bile emekli etmek zorunda kalacaktı.

Buradaki üst düzey özet, onu anlayabilecekleri ve buna değer olduğunu düşünmesi muhtemel olarak belirtmeniz gerekir:

  • Kaynakları (donanım ve insanlar) başka amaçlarla serbest bırakmak
  • Düşük risk (insan hatası, kararlı teknoloji)
  • Artan verimlilik
  • Uygulanması gereken küçük maliyet

Üstleriniz teknik insanlar değil ve teknik problemleri önemsemiyorlar. Fakat sorunu para ve paraya mal olacak şeyler çerçevesinde çerçevelendirebilirseniz kulakları biraz yükselebilir.


1

Sorunuzu ve birçok yorumunuzu okuduktan sonra, aşağıdaki kısıtlamalara / senaryoya sahip olduğunuzu anladım:

  • Proje başına 1 kişi;
  • Projeniz için Visual Studio 2005 dışındaki harici araçları kullanamazsınız; GIT veya başka bir SCM kullanamazsınız;
  • yerel olarak çalışırken, projenin bozuk durumda olmasına izin veremezsiniz, çünkü zaman zaman otomatik yedeklemeleriniz vardır ve her zaman çalışmasını sağlamalısınız;
  • değişiklikleri izlemek için bazı geçmişlere ihtiyacınız var;

Visual Source Safe'i (VS 2005 ile çalışmak için eklenti içeren) kullanamıyorsanız, başka bir yaklaşım kullanabilirsiniz.

Yukarıdaki öğelere dayanarak, proje klasörlerinizi aşağıdaki gibi düzenlemenizi öneririz:

trunk           //last functional version of the app. IMPORTANT: YOU DON'T WORK WITH THIS FOLDER
    UnitTests   //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln
temp              //your working folder; has structure similar to trunk; changes will be commited to trunk;
    UnitTests     //important: create unitary tests in order to guarantee stuff is working after changes
    MyClassLibrary1
    MyClassLibrary2
    MyApplication
    Docs
    readme.md
    YouProject.sln  
build
    .history    //folder to contain changes in files and your comment (like commits in git)
    build.bat   //calls MSBuild to build temp\YourProject.sln, and run all unit tests
    save_on_trunk.bat   //if build is working, saves info from "diff.bat" in folder within ".history" with timestamp, and also overrides "trunk" with content from "temp"
    diff.bat         //compares files from "temp" and "trunk", using "dir" and "fc" commands
    history.bat  //outputs content from .history folder (contains file changes and comments)

Burada izlenecek temel kurallar:

  • kod kontrolünüz projenin klasöründe gerçekleştirilecektir;
  • sen hiç "bagajda" çalışmıyorsun;
  • "temp" da çalışıyorsanız , birim sınamalarını uygulayın , build.bat'i çağırın ve ardından save_on_trunk.bat ;
  • ÖNEMLİ: tamamen yalıtımlı olarak çalışan birim testlerini uygulayın; yeni kodun bagajı kırmayacağını garanti etmek için buna ihtiyacınız var;
  • otomatik yedeklemeleriniz olduğundan, kod kaybetme şansınız daha düşük olacaktır; bu nedenle, yalnızca "ana hat" kodunu her zaman çalışır durumda olması için yapmanız gerekir.

1
Nazikçe kullanıcıdan bir geri bildirimde bulunmasını rica ediyorum. Ben bir "cevabım artırmak istiyorum kod kalitesini korumak SCM olmadan ? " Sorusuna.
Emerson Cardoso,

1

Teknik çözümleriniz bitti. Sadece politik çözümler kalır.

1) Geliştiricileri birleştirin. Zaten bir sendika varsa, geliştirici olan çalışan sınıfını adil bir şekilde temsil etmemek için pozisyonlarına meydan okuyun. Bir geliştirici birliği oluşturmak, geliştiricilerin yarısını desteklemekte başarısız olursa, GO. Sen kötü bir formdasın.

2) Gazete ilanı. Hükümetiniz, kabul görmüş bir hukuk meselesi olarak serbest konuşma garantisi vermezse, bu kovulmanıza neden olur.


1
1) Bir sendikaya aktif üye olan biri olarak, sendikanın bu konuda kesinlikle hiçbir şey yapamayacağını söyleyebilirim. Bir sendikaların amacı toplu pazarlığı kontrol etmek ve toplu sözleşmenin işveren tarafından ihlal edilmemesini sağlamaktır. İşverene bağlı olarak, eğer yönetim bundan kurtulursa bir sendika kurmaya çalışmaktan kovulabilirsin. 2) Ülke, halkına ücretsiz konuşma garantisi verse bile, bir çalışan olarak hala medyaya koşamazsınız. Bunun için kesinlikle ateş olabilirsin.
SaggingRufus

1
Bu cevap kaybeder, durumu kaybedersiniz.
SaggingRufus

@SaggingRufus: Sendikalar, iş için doğru araçları sağlamalarını kesinlikle talep edebilirler. Çalışan-işveren özel bir şirket için medyaya gidemez, ancak bir hükümet birimi bu şekilde sorumlu tutulabilir.
Joshua,

1
Bir teknoloji firmasında bir sendika için çalışan biri olarak, sizi temin ederim, kesinlikle 0 diyebiliriz. Bir sağlık ve güvenlik sorunu olmadıkça, birliğin yeri yoktur. Bir düzeyde seninle aynı fikirdeyim. Bu softwear değilse, "iş için doğru araçlar" bölümü yorum doğru olacaktır. Mesela bir sendikanın içinde bir marangoz olduğunuzu ve işvereninizin size bir merdiven almayı reddettiğini ve tırmanmak için üst üste 7 sandalye istiflemeniz gerektiğini söyledi. Daha sonra size uygun araçları sağlamanın işverenlerin yükümlülüğü olduğunu söyleyebilirsiniz. Bu noktada, bir güvenlik konusu haline geldi.
SaggingRufus

0

Git for Windows'un "taşınabilir" bir sürümü var . Herhangi bir şey yüklemenize gerek kalmadan, bunu PC'nize kopyalayabilir veya bir bellek çubuğunda saklayabilirsiniz. Sorun sadece kurulum ise, bu bir geçici çözüm olacaktır.

Düzgün olarak SCM'ye karşı çıkıyorlarsa, ISO-9001, DO-178B veya diğer ilgili yazılım geliştirme standartları hakkında sivri sorular sormak isteyebileceğinizi unutmayın.


1
bu sadece 20 saat önce yayınlanan bu önceki cevabın verdiği ve açıkladığı noktaları tekrar ediyor gibi görünüyor
gnat

@gnat Bağlantıyı görmedim mi?
Graham,

3
Bağlantınızı sadece diğer cevaba yorum olarak ekleyebilirsiniz.
icc97

0

Git'i yalnızca hiçbir sunucunun dahil olmadığı çıplak bir dizinde çalıştırın. Dizini kontrol edebildiğiniz için hiç kimsenin sürüm kontrolünü kullanması önemli değildir. Git tam olarak bu haydut SCM tanıtım senaryosu için tasarlandı ve iyi çalışıyor.

İkinci kişi kullanmaya başladığında, yayılması için bazı dinozorların kovayı atmasını beklemeniz gerekse bile bir kahraman olacaksınız. Artık SCM'siz büyük kod tabanlarını yönetme yetersizliği. Aslında, hiçbir şeyi denetlemeden bir işi yürütmek gibidir.


-1

Profesyonel bir geliştirici olarak ısrar etmek isteyeceğiniz üç ayrı şey var: Kod incelemeleri, sürüm geçmişi ve değişiklik değişiklik isteklerini izleme.

Değişiklik isteklerini kendiniz takip edebilirsiniz. Doğru aletlerde olduğu kadar hoş değilsin ama yapabilirsin. İkinci bölüm kod incelemeleridir. Bunun için, kodunuzun önceki kopyasına ve bir diff aracına ihtiyacınız var. Bir değişikliğin hazır olduğunu düşünüyorsanız, önceki sürümle dikkatlice karşılaştırarak kendiniz gözden geçirin, ardından önceki sürümü yenisiyle değiştirin.

Sürüm kontrolü için, iş yeriniz uygun bir çözüme izin vermiyorsa, ihtiyacınız olan bir yazılabilir DVD kutusu. Her zaman geri gelmek için saklamak istediğiniz bir sürüme sahipseniz, yeni bir DVD oluşturursunuz.

(Açıkçası bunların tümü, görünüşe göre OP gibi gerçekten kötü bir işyerinde olmadığınız sürece alınması gereken tavsiyeler değildir).

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.