# Prontuario Git per installare/aggiornare Warehouse da remoto

Repository Gitea:

    https://gitea.alessandrobonvicini.it/administrator/ware_house.git

Cartella consigliata sul PC di produzione:

    C:\flywms

Ramo principale da usare in produzione:

    main

Ultimo tag stabile al momento della stesura:

    alpha7-stabilizzazione-non-scaffalate


1. Prima installazione su PC nuovo
----------------------------------

Aprire PowerShell nella macchina di produzione ed eseguire:

    cd C:\
    git clone https://gitea.alessandrobonvicini.it/administrator/ware_house.git C:\flywms
    cd C:\flywms
    git switch main
    git pull origin main

Installare le dipendenze Python:

    python -m pip install --upgrade pip
    python -m pip install -r requirements.txt

Avvio applicazione desktop:

    python main.py

Oppure senza finestra console:

    pythonw warehouse.pyw

Avvio applicazione barcode:

    python barcode_client.py

Oppure senza finestra console:

    pythonw barcode.pyw


2. Aggiornare un'installazione gia' esistente
--------------------------------------------

Sul PC di produzione:

    cd C:\flywms
    git fetch --all --tags
    git switch main
    git pull origin main
    python -m pip install -r requirements.txt

Poi rilanciare l'applicazione.


2.bis Aggiornare produzione dopo merge su main gia' fatto
---------------------------------------------------------

Questo e' il caso piu' normale:

    - sul PC di sviluppo hai gia' fatto merge del ramo di lavoro dentro main;
    - hai gia' fatto push su Gitea;
    - sul PC di produzione devi solo scaricare l'ultima versione ufficiale.

Sul PC di produzione eseguire:

    cd C:\flywms
    git fetch --all --tags
    git switch main
    git pull origin main
    python -m pip install -r requirements.txt

Poi chiudere e riaprire l'applicazione.

Controllo consigliato dopo l'aggiornamento:

    git log --oneline --decorate -3
    git describe --tags --abbrev=0 main


3. Controllare che versione/tag si sta usando
---------------------------------------------

Dentro C:\flywms:

    git status
    git log --oneline --decorate -5

Vedere l'ultimo tag raggiungibile da main:

    git describe --tags --abbrev=0 main

Vedere tutti i tag, dal piu' recente:

    git tag --sort=-creatordate

Vedere graficamente branch, commit e tag:

    git log --oneline --decorate --graph --all -20


4. Installare esattamente una versione taggata
---------------------------------------------

Usare questa modalita' quando si vuole installare una fotografia precisa e non
necessariamente l'ultima versione di main.

Esempio:

    cd C:\
    git clone --branch alpha7-stabilizzazione-non-scaffalate https://gitea.alessandrobonvicini.it/administrator/ware_house.git C:\flywms_alpha7

Nota:

    Un tag e' una fotografia ferma. Non avanza con git pull come un branch.
    Per produzione ordinaria e' piu' comodo usare main.


5. Portare l'ultimo sviluppo dentro main
---------------------------------------

Da fare sulla macchina di sviluppo, non sul PC di produzione.

Se l'ultima versione buona e' su sviluppo3 e vuoi renderla ufficiale su main:

    cd C:\devel\python\ware_house
    git fetch --all --tags
    git status
    git switch main
    git pull origin main
    git merge sviluppo3
    git push origin main

Se vuoi anche creare un tag stabile:

    git tag nome-del-tag
    git push origin nome-del-tag

Esempio:

    git tag alpha8-nome-breve-della-modifica
    git push origin alpha8-nome-breve-della-modifica


6. Se il PC di produzione ha modifiche locali
---------------------------------------------

Prima di aggiornare controllare:

    cd C:\flywms
    git status

Se compaiono file modificati che non devono essere conservati, NON fare comandi
distruttivi senza sapere cosa sono. Prima copiare o rinominare i file modificati.

File che normalmente NON devono essere messi nel repository:

    db_connection.json
    *.log
    __pycache__
    *.pyc
    *.zip


7. Script SQL
-------------

Gli script SQL sono nel repository e vanno lanciati in SSMS solo quando serve
preparare o aggiornare il database per le funzioni Python.

Patch principali:

    apply_python_parallel_pickinglist_patch.sql
    apply_python_pickinglist_history_views.sql
    apply_online_history_forms_patch.sql

Rollback principali:

    rollback_python_parallel_pickinglist_patch.sql
    rollback_python_pickinglist_history_views.sql
    rollback_online_history_forms_patch.sql

Nota:

    Prima di lanciare patch SQL in produzione, fare sempre backup o snapshot del
    database, oppure verificare di avere una procedura di rollback sicura.


8. Comando rapido piu' usato
----------------------------

Aggiornamento standard del PC di produzione:

    cd C:\flywms
    git fetch --all --tags
    git switch main
    git pull origin main
    python -m pip install -r requirements.txt
	

9. Per vedere cosa ho installato
------------------------------------------------------
	git log --oneline --decorate -3
	git describe --tags --abbrev=0 main


10. Salvare questo prontuario su Gitea
-------------------------------------

Da fare sul PC di sviluppo, dentro la cartella del repository:

    cd C:\devel\python\ware_house
    git status
    git add comandi_git_per_installare.txt
    git commit -m "Aggiungi prontuario Git per installazione remota"
    git push origin main

Dopo il push, il file sara' disponibile anche sui PC di produzione al prossimo:

    cd C:\flywms
    git pull origin main


11. Aggiornare il prontuario se lo modifico in locale
----------------------------------------------------

Se modifichi questo file sul PC di sviluppo e vuoi sincronizzarlo su Gitea:

    cd C:\devel\python\ware_house
    git status
    git diff -- comandi_git_per_installare.txt
    git add comandi_git_per_installare.txt
    git commit -m "Aggiorna prontuario Git installazione"
    git push origin main

Se invece lo hai modificato su un PC di produzione e vuoi prima recuperare
eventuali aggiornamenti online:

    cd C:\flywms
    git status
    git pull origin main

Se Git segnala conflitti, fermarsi e risolverli prima di rilanciare
l'applicazione. Per evitare confusione, e' meglio modificare questo prontuario
solo sul PC di sviluppo e poi fare push su Gitea.
