Flusso di lavoro GIT per sviluppatori singoli (passaggio da FTP semplice)


11

Sto cercando di decidere se il passaggio a VCS è ragionevole per me. Sono un singolo sviluppatore web in una piccola organizzazione (5 persone). Sto pensando a VCS (Git) per questi motivi: controllo della versione, backup offsite, repository di codice centralizzato (può accedere da casa).

Al momento lavoro su un server live in generale. Ho FTP in, faccio le mie modifiche e le salvo, quindi ricaricare e aggiornare. Le modifiche sono in genere su file di temi / plugin per CMS (ad esempio concrete5 o Wordpress). Funziona bene ma non fornisce alcun backup e nessun controllo di versione.

Mi chiedo come integrare al meglio VCS in questa procedura. Immaginerei di configurare un server Git sul server Web dell'azienda, ma non sono chiaro come inviare le modifiche agli account dei client (di solito VPS sullo stesso server) - al momento accedo semplicemente a SFTP con i loro dettagli e realizzo le modifiche direttamente.

Inoltre, non sono sicuro di cosa rappresenterebbe sensibilmente un repository: il sito Web di ogni cliente ne otterrebbe uno proprio?

Qualsiasi approfondimento o esperienza sarebbe davvero utile. Non credo di aver bisogno della piena potenza di Git in alcun modo, ma il controllo di versione di base e l'accesso al cloud di fatto sarebbero davvero utili.

EDIT: l' ho ridotto alle due opzioni che sembrano più sensate. Il primo si basa sulla risposta di ZweiBlumen , in base alla quale le modifiche vengono apportate sul server live e trasferite da lì al server Git (esterno). Questo ha il vantaggio che il mio flusso di lavoro non cambierà molto (c'è un passaggio in più per effettuare i commit, ma per il resto è identico).

La seconda opzione è lavorare localmente usando XAMPP, quindi eseguire il commit delle modifiche dal computer locale. Solo quando il sito viene pubblicato, carico l'articolo finito sul server Web dal computer locale (immediatamente dopo il commit finale su Git). In teoria questo sembra a posto, ma se in seguito il sito richiede modifiche e le faccio sul server live (come faccio di solito), allora dovrò copiare manualmente i file modificati nel mio repository locale, quindi eseguire il commit di tali modifiche nel Server Git. Questo sembra eccessivamente complesso ed è forse troppo lontano dal mio attuale flusso di lavoro.

Penso che a conti fatti darò l'opzione n. 1 e vedrò come andrò avanti.


1
La cosa da ricordare su git (o su qualsiasi altro VCS distribuito) è che tutti i repository sono, almeno tecnicamente, peer: il tuo repository locale è "reale" come quello sul server live o sul repository di backup. Sono le tue politiche del flusso di lavoro che danno loro la struttura, quindi se vuoi davvero continuare a fare un lavoro primario sul server live, puoi ...
comingstorm

Grazie, buono a sapersi. La flessibilità intrinseca di Git rende difficile elaborare un punto di partenza delle "migliori pratiche": è un punto di forza del punto di vista di un utente esperto, ma è discutibile una debolezza di un noob!
melat0nin

Risposte:


3

Quello che faccio (con Subversion, ma funzionerà anche con Git) è il commit di tutto in un repository Subversion, ma ovviamente diviso in progetti, rami, tag se necessario. Quindi controllo questi repository sul server live. Pertanto, quando apporto una modifica alla mia macchina di sviluppo e la commetto nel repository, spesso è semplicemente un caso di aggiornamento della copia estratta sul server live per rendere attive le modifiche. Il vantaggio aggiuntivo è che se devo apportare una correzione rapida sul server live, lo commetto nel repository dal server e aggiorno la copia funzionante sul mio computer di sviluppo.

Sono sicuro che ci sono altri modi per gestirlo, ma lo trovo abbastanza semplice e mi trovo esattamente nella stessa situazione di te: singolo sviluppatore in una piccola organizzazione (4 persone).


1
Grazie per la tua risposta! Ciò significa che esegui l'istantanea sul tuo computer locale, apporti e apporti modifiche, quindi esegui una richiesta pull dal server live (tramite SSHing in)? E se il cambiamento fosse davvero piccolo? Gestisci un server web locale per lo sviluppo? (Non potrei passare attraverso questo processo per semplici modifiche CSS .. Sarei impazzito!)
melat0nin

1
Per una piccola modifica CSS vorrei apportare la modifica direttamente sul server e quindi eseguire il commit di tale modifica nel repository dal server. Quando devo fare una quantità più seria di lavoro sul sito, aggiornerei il sito sul mio computer di sviluppo con l'ultima versione del sito dal repository. Immagino che non importa dove si apporta la modifica (server o macchina di sviluppo) fintanto che lo si impegna nel repository.
ZweiBlumen,

Quindi quali strumenti usi per questo? FTP per apportare modifiche al file direttamente sul server, quindi una sessione SSH aperta in background per eseguire gli commit sul server Git di tanto in tanto?
melat0nin

1
Sì, è praticamente tutto. In effetti io uso Subversion. Abbiamo siti su server Windows e Linux. Su Windows I desktop remoto su di essi, apporta le modifiche CSS e esegui il commit utilizzando TortoiseSVN. Su Linux utilizzo una sessione SSH e vim per apportare le modifiche (ma è anche possibile FTP le tue modifiche credo).
ZweiBlumen,

Ho seguito il tuo suggerimento di modificare il server e poi di impegnarmi da lì tramite SSH, cosa che faccio da alcuni giorni. Sembra funzionare davvero bene, grazie!
melat0nin

2

È piuttosto semplice creare un post-updatehook , che aggiorna automaticamente ( git archivesi preferisce esportare con per motivi di sicurezza) la directory dei dati del web server quando si passa a un ramo specifico.

Quindi avere un repository git impostato da qualche parte (per motivi di sicurezza lo metterei su un server diverso rispetto al web) con tale hook. Avrai ovviamente bisogno di un server di prova per testare modifiche più grandi, che possono essere sul tuo computer locale o aggiornate spingendo verso un ramo diverso. In entrambi i casi, puoi ignorarlo per errori di ortografia e correzioni CSS semplicemente eseguendo il commit e il push.


1

Seguirei questi passaggi:

  1. Configurare il server remoto con una coppia di chiavi pubblica / privata appropriata per push / pull remoti
  2. Impostare due rami test e rilascio
  3. Sviluppa localmente con un ambiente di test nel ramo di testing
  4. Quando sei soddisfatto, unisciti al ramo di rilascio e spingi sul server remoto
  5. Agganciare il server remoto per aggiornare all'ultima versione di rilascio

Imposta un repository per sito Web, per evitare che si confondano a vicenda. I rami separati ti consentono di evitare che l'attuale blocco della "buona" versione passi a ciò su cui stai attualmente lavorando, che potrebbe funzionare o meno.


Quindi sto capendo correttamente: ci sono due server (1) per Git, (2) server web live e una macchina di sviluppo locale. Lo sviluppo viene eseguito localmente, quindi trasferito al server Git che ha un hook per l'aggiornamento del server live?
melat0nin

@ melat0nin Questo è un modo per farlo. Puoi anche fare in modo che il server live esegua il pull dal server git come cron job. Oppure puoi avere 2 macchine. La macchina di sviluppo locale e il server web di produzione live. In questo modo, spingendo il repository dalla macchina di sviluppo alla macchina di produzione si aggiorna al ramo di rilascio più recente ogni volta che si preme.
Spencer Rathbun,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.