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.