Il progetto Git open source ha pubblicato Git 2.56.0, con sviluppi e correzioni di bug da parte di oltre 104 contributori; 39 di loro hanno contribuito al progetto per la prima volta. La versione precedente era Git 2.55.
La nuova versione offre l’opzione `git add –resolved` per mettere in staging solo i percorsi interessati durante la risoluzione dei conflitti di fusione. Questa modalità valuta i percorsi non fusi nella directory e, prima di metterli in staging, controlla i normali file alla ricerca di marcatori di conflitto residui. Se trova un marcatore, segnala i percorsi interessati e non modifica la directory. In questo modo, mentre le modifiche locali non correlate al conflitto, come `notes.txt`, non vengono messe in staging, il file risolto `recipe.txt` può essere preparato. La selezione può essere circoscritta con un modello di percorso; se uno dei file selezionati contiene un marcatore, nessuno di essi viene messo in staging. Le eliminazioni risolte e i conflitti binari vengono gestiti normalmente. L’opzione non può essere combinata con `git add -u` o `git add -A` e ignora i file tracciati che in precedenza non erano coinvolti in conflitti.
Git 2.56 accelera inoltre le operazioni che cercano gli antenati comuni. Git procede a ritroso a partire da due punti di registrazione per trovare le basi di fusione raggiungibili da entrambi i lati. Poiché le fusioni criss-cross possono richiedere più basi, la ricerca continua finché non vengono individuate tutte le basi. Il nuovo meccanismo di monitoraggio rileva che non può formarsi un nuovo punto comune quando si esauriscono le registrazioni in sospeso specifiche di uno dei due lati e interrompe la ricerca, preservando tutte le basi di fusione.
Perché è importante
La nuova modalità di preparazione consente agli sviluppatori alle prese con un conflitto di fusione di separare i file la cui risoluzione è stata completata senza mescolarli alle modifiche locali; ciò riduce il rischio di errori, soprattutto per i team che eseguono modifiche diverse nella stessa directory di lavoro. Il controllo dei marcatori di conflitto fornisce un’ulteriore verifica, impedendo di preparare accidentalmente contenuti incompleti per la registrazione. Il miglioramento nella ricerca degli antenati comuni incide invece sul modo in cui Git reperisce le informazioni necessarie della cronologia nei repository che includono fusioni con molti rami e fusioni criss-cross. In questo modo, la versione non introduce soltanto un nuovo comando, ma interviene anche sul comportamento delle operazioni eseguite su cronologie complesse. Resta tuttavia da chiarire in quale misura queste modifiche verranno adottate nei diversi flussi di lavoro e in quali repository il guadagno in termini di prestazioni sarà più evidente.