Installerade versionshanteringsserver på NAS

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Installerade versionshanteringsserver på NAS

Inlägg av Andax »

Här kommer en liten beskrivning av ett mjukvarurelaterat mini-projekt.

Bakgrund:
Med åren så har det blivit lite spretigt med alla projekt som har legat utspridda på flera datorer i lite olika färdighetsgrad mm. Lite bättre blev det när jag samlade ihop projekten och la dem på en Synology NAS som jag införskaffade för drygt ett år sedan.
Men eftersom många projekt innehåller programvara som ändras ganska ofta så behövde jag ett riktigt versionshanteringssystem.
NASen jag har är Linux 2.6 ARM baserad. Jag har testat att installera Subversion (SVN) för konfigurationshantering, men jag fick det aldrig att bli bra och jag har inte fattat hur det funkar helt under skalet.
Eftersom jag har ganska mycket erfarenhet av att köra Perforce blev jag glad när jag såg att det fanns en kompilerad version av servern för just Linux 2.6 ARM. Perforce kostar normalt pengar, men är gratis för upp till 20 användare och 20 workspaces (läs datorer), så det är ju lungt.

Klient-delen finns för windows och linux och har stöd för direkt integration i explorer, visual studio, office etc. eller via deras visual client eller command line interface.

Jag tänkte inte gå igenom i detalj utan mer schematiskt hur jag gjort och om någon annan är intresserad att göra samma sak hjälper jag gärna till eller förklarar mer utförligt.

1 ) skapade en extra användare på nas dedikerad för hantera server och server rättigheter.
2 ) skapade fil-root där versionshanterad information och databasinfo lagras av servern.
3 ) Sätta upp miljövariabler för att peka ut platser för lagra versionshanterade filer, samt loggar.
4 ) skapade krypteringsnycker eftersom jag ville köra ssl. Inte för att mina hobbyprojekt är så intressanta att sno, men jag föredrar att köra med någon form av kryptering istället för klartext.
5 ) starta servern
6 ) intallera visual client på windowsmaskinen.
7 ) peka ut ip och port for versionservern.
8 ) checka in första filen
9 ) klart!


TODO:

* Att fixa så att perforce server programmet automatiskt återstartar om det blir strömavbrott. Ska väl bara in och grotta i någon init.d eller något sådant.

* Fixa automatisk backup till mina föräldrars NAS. Även om man oftast har en kopia lokalt så hjälper det ju inte mot brand.

* Städa upp i mina projekt innan jag checkar in dem. Det är det svåraste.

Man vill ju att gemensamma delar ska ligga på ett visst sätt så att man får hög återanvändningsgrad. Kanske någon har lite tips hur man ordnar multipla projekt med mjukvara både för PC och microkontrollrar, kretskort och annan elektronik. mekanik, underlag för fräsning och svarvning etc?
Man skulle kanske ha en standardiserad mappstruktur som man lägger upp alla nya projekt efter så att man får hög igenkänningsfaktor. Blir förhoppningsvis mindre slöseri med letande efter olika filer etc och mer fokus på själva skapandeprocessen.
Har någon tips om best practice kring detta så vore det guld värt! :)
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Installerade versionshanteringsserver på NAS

Inlägg av stekern »

Intressant, kan du utveckla lite om fördelarna med perforce för den oinsatta (t.ex. mig)?

Själv har jag alla mina projekt liggande på en separat dator som git repositories,
det är rätt smidigt eftersom inget annat än ssh access krävs för att kunna pusha och
pulla till dem (jag har iofs en git-daemon och webvisning av de,
men det är ingenting som är nödvändigt för grundsetupen).
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Installerade versionshanteringsserver på NAS

Inlägg av sodjan »

> ...fördelarna med perforce för den oinsatta

Fördelarna jämfört med vadå?

http://en.wikipedia.org/wiki/Perforce
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Installerade versionshanteringsserver på NAS

Inlägg av Andax »

Mina erfarenheter bygger mest på SVN och Perforce. Smaken är som baken, men:

1) Jag ogillar att svn gödslar med .svn mappar för att hålla reda på lokal filstatus. Vad händer om man kopierar mappar etc.
2) Gillar perforce centraliserade databassystem, där man kan styra om man kan ska kunna jobba med en fil parallellt eller om bara en i taget kan jobba med en fil. Går att styra beteendet utifrån filtyp. Viktigt om det är filer som inte går att merga lätt.
3) Kraftfullt visuellt diff och merge verktyg i P4V (perforce visual client) om flera jobbat parallellt med text eller källkod, eller om man vill se förändringar mellan revisioner, eller merga olika utvecklingsspår.
4) Min erfarenhet är att det är perforce är mycket stabilt och mycket kompatibelt mellan olika versioner.
5) Lätt att administrera och lägga till backup-skript etc. Vet att vissa företag har dedikerad personal för sina versionhanteringssystem för att de är omständiga att administrera. Min erfarenhet är att perforce är nära "sätt upp och glöm bort"

När det gäller git har jag för lite erfarenhet för att kunna göra en relevant jämförelse.
Senast redigerad av Andax 23 oktober 2012, 10:31:46, redigerad totalt 1 gång.
Användarvisningsbild
AndLi
Inlägg: 18254
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Installerade versionshanteringsserver på NAS

Inlägg av AndLi »

andax: Fast de lokala .svn filerna i alla kataloger har försvunnit, i alla fall om man kör en modernare version av TortoiseSVN på klientsidan.. Men visst kunde man strula till det ordentligt innan :)
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Installerade versionshanteringsserver på NAS

Inlägg av Andax »

AndLi, fast då krånglas det väl till om man blandar vilken klient-mjukvara man kör? Funkar det att köra t.ex. TortoiseSVN med någon command-line version (t.ex. om man vill automatisera vissa processer) ?
Användarvisningsbild
AndLi
Inlägg: 18254
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Installerade versionshanteringsserver på NAS

Inlägg av AndLi »

Min win7 burk har en cmd line svn klient, jag tror inte jag installerat något annat än tortoise! Så det verkar ingå..
Nerre
Inlägg: 27195
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Installerade versionshanteringsserver på NAS

Inlägg av Nerre »

Vad jag förstått skrevs Git av Linus Torvalds eftersom han hade åsikter om CVS och SVN... Så att ha med SVN i jämförelsen är kanske lite orättvist? :)

http://en.wikipedia.org/wiki/Git_%28software%29#History
I see Subversion as being the most pointless project ever started.
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Installerade versionshanteringsserver på NAS

Inlägg av stekern »

Andax skrev:Mina erfarenheter bygger mest på SVN och Perforce. Smaken är som baken, men:
Mina erfarenheter bygger på SVN och git, mycket bra lista nedan, jag har byggt på med mina git-erfarenheter.
Andax skrev:1) Jag ogillar att svn gödslar med .svn mappar för att hålla reda på lokal filstatus. Vad händer om man kopierar mappar etc.
Detta ogillar jag med, git gör bara _en_ .git katalog i root katalogen.
När man kopierar .git katalogen följer hela revisionshistorian med, detta ser jag som en stor fördel då man lätt kan göra backup på sina repositorier.
Andax skrev:2) Gillar perforce centraliserade databassystem, där man kan styra om man kan ska kunna jobba med en fil parallellt eller om bara en i taget kan jobba med en fil. Går att styra beteendet utifrån filtyp. Viktigt om det är filer som inte går att merga lätt.
Detta är såklart helt annorlunda gentemot git, eftersom hela iden bygger på att det är decentraliserat. git duger heller inte mycket till att versionskontrollera annat än källkod.
Andax skrev:3) Kraftfullt visuellt diff och merge verktyg i P4V (perforce visual client) om flera jobbat parallellt med text eller källkod, eller om man vill se förändringar mellan revisioner, eller merga olika utvecklingsspår.
Detta är såklart en fördel att det kommer med, git har egentligen inga visuella merge verktyg inbyggt. Jag har kopplat merge funktionen till det här
programmet som jag kan rekommendera: http://www.sourcegear.com/diffmerge/
Andax skrev:4) Min erfarenhet är att det är perforce är mycket stabilt och mycket kompatibelt mellan olika versioner.
Låter bra :)
Andax skrev:5) Lätt att administrera och lägga till backup-skript etc. Vet att vissa företag har dedikerad personal för sina versionhanteringssystem för att de är omständiga att administrera. Min erfarenhet är att perforce är nära "sätt upp och glöm bort"
Att "sätta upp" ett git repository är i princip bara att köra 'git init --bare reponamn', att använda det effektivt kräver dock en hel del övning.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Installerade versionshanteringsserver på NAS

Inlägg av Andax »

Stekern mflr, hur brukar ni strukturera era projekt rent strukturmässigt (mappar, återanvändning etc)?

När ni återanvänder tidigare delar (t.ex. "drivrutiner' för olika delar i mikrokontrollers, eller vhdl-paket i fpga projekt) tar ni nya kopior och lägger i nya projekt eller har ni stenkoll och kan köra relativa länkar till andra tidigare projekt?
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Installerade versionshanteringsserver på NAS

Inlägg av stekern »

Det beror lite på projektet, en del projekt kanske man vill behålla som det är utan att förändringar i sambande med ett annat projekt
propagerar över till det (med risk för att ett "känt att fungera" projekt plötsligt är trasigt när man som minst behöver det).
En fördel med git i det här avseendet är att om man bara har lite disciplin när man gör sina commits så
kan man enkelt plocka patchar mellan de olika kodbaserna och på så sätt hålla de i sync.
En annan metod som jag applicerat på en del projekt är att jag i den generiska delen (t.ex. hw-interface)
skapar en separat branch med "känd att fungera för projekt x", sen kan man alltid gå tillbaka dit om något
ter sig trasigt nästa gång man pillar på projekt x.
Skriv svar