Codice errato dopo una merge #
Se il codice di un metodo viene modificato sia in un fork che nella copia master, è possibile che al termine dell’operazione di merge il codice risultante non sia valido. Questo avviene anche con GitHub nei casi analoghi.
Come abbiamo visto nei paragrafi precedenti, Instant Developer Cloud ha una funzione di Instant Refactoring, che propaga le modifiche effettuate adattando l’intero codice del progetto. È quindi possibile che i metodi vengano modificati anche indirettamente, a seguito di una precedente modifica apparentemente non correlata. È per questo che è molto importante verificare le differenze in fase di commit, in quanto ci si può rendere conto di tutte le modifiche che si stanno apportando al progetto.
Un’altra sorgente di modifiche inattese risiede proprio nella gestione “relazionale” del progetto. Se, ad esempio, viene cancellato un parametro di una funzione, e poi successivamente viene ricreato, esso non mantiene il medesimo valore identificativo interno (guid). Nel progetto in fase di modifica, le referenze al parametro vengono automaticamente convertite al nuovo guid, ma quando viene effettuato il merge di questa modifica su un altro branch, le referenze al vecchio parametro vengono perse.
Cancellando e ricreando un parametro, alcune referenze vengono perse dopo la merge
In questi casi si consiglia di effettuare una correzione manuale del codice dopo la merge, come sarebbe stato necessario anche con GitHub in caso di modifiche multiple alla stessa sezione dello stesso file.
È consigliabile tuttavia risolvere il problema alla radice: se si cancella un parametro per errore, è meglio annullare l’operazione (ctrl-z) piuttosto che aggiungerne uno nuovo; in questo caso infatti non si crea alcuna differenza nel progetto.
Codice duplicato dopo una merge #
In alcuni casi è possibile ottenere sia codice duplicato all’interno dello stesso metodo sia addirittura metodi o eventi duplicati.
Questo può avvenire per le stesse ragioni viste prima: se, ad esempio, viene aggiunto l’evento onClick allo stesso elemento da entrambi i lati, al momento del merge si otterranno due eventi onClick per lo stesso elemento. Questa condizione verrà segnalata con un errore al momento della compilazione.
Se si cancella e poi si ricrea un metodo nell’albero, anche se il metodo ha lo stesso nome del precedente è in effetti un oggetto completamente nuovo. Anche in questi casi, l’analisi al momento del commit evidenzia il problema e rende possibile risolverlo prima di trasmetterlo agli altri partecipanti del progetto.
Se infine si modifica lo stesso metodo da entrambi i lati, il sistema che unisce le modifiche alle precedenti può dover mantenere entrambe le righe aggiunte senza sostituirle con le precedenti perché non più esistenti, e in questo caso si può ottenere codice duplicato.
Errori javascript dopo aver effettuato un’operazione di team working #
Se il sistema rileva un errore javascript durante un’operazione di team working, la sessione IDE viene automaticamente ricaricata. In tal caso si consiglia di:
- Chiudere e riaprire il progetto dalla console.
- Ritentare l’operazione.
- Se il problema persiste, effettuare un backup del progetto e aprire una segnalazione di errore interno nel sistema di help desk di Instant Developer indicando:
- Il nome del progetto e il nome del backup.
- L’errore o l’operazione che si stava tentando di eseguire.
- L’eventuale situazione di blocco dell’operatività, che rende urgente la segnalazione.
Si segnala che se l’operazione che genera l’errore è una fetch, e il fork non ha codice da inviare al master, è consigliabile effettuare un nuovo fork e ripartire usando quello. In questo modo la situazione che ha causato l’errore viene mantenuta, ma non si rimane bloccati e il lavoro può proseguire.
Progetti in stato invalido o danneggiato #
Se per qualunque ragione un progetto risultasse invalido o talmente danneggiato da non poter essere facilmente recuperato, si segnala che il sistema effettua backup notturni automatici di tutti i progetti modificati il giorno precedente, mantenendo le ultime cinque copie. Oltre ai backup notturni è possibile effettuare un backup manuale tramite la console in qualunque momento.
Se si ripristina un progetto dal backup è necessario sapere che anche l’intero stato di Team Works viene ripristinato. Questo solitamente non ha effetti negativi se il backup ripristinato è recente; potrebbe avere invece effetti imprevedibili se il backup ripristinato è fuori sincronia rispetto allo stato degli altri fork che partecipano al progetto.
Prima di effettuare qualunque operazione di ripristino si consiglia di effettuare un backup del progetto nello stato attuale (invalido o danneggiato) e aprire una segnalazione di errore interno nel sistema di help desk di Instant Developer indicando:
- Il nome del progetto e il nome del backup.
- Lo stato del progetto.
- L’eventuale situazione di blocco dell’operatività, che rende urgente la segnalazione.
Dopo la segnalazione si consiglia di tentare il ripristino di un backup in modo da riprendere il lavoro.
Ripristino completo dello stato del team working #
Se si desidera ripristinare lo stato del team working di un progetto, si consiglia di procedere come segue:
- Consolidare tutte le modifiche dei fork nella copia master.
- Aggiustare e rendere valida la copia master.
- Eliminare tutti i fork.
- Tramite il menu contestuale del progetto nella lista dei progetti della console, inviare il comando Resetta TW.
- Eseguire nuovamente i fork e ripartire.