QA/Bibisect/Automation/it

L'automazione può essere eseguita su diversi livelli. Alcune shell e plugin come Oh My Zsh hanno già alias per git. Oppure possiamo creare i nostri alias per l'efficienza. Oppure possiamo utilizzare bibisect completamente automatizzato.

Curiosità per l'efficienza
La natura ripetitiva del bibisecting diventa noiosa velocemente, quindi ogni trucco che potete usare per rendere il processo più veloce è prezioso. Un modo tipico è definire alias per comandi complessi nel file .bashrc.

Il .bashrc di un bibisecter attivo potrebbe includere un blocco come questo:

Abbiamo comandi per passare al commit successivo o precedente, "pycache" per gestire un fastidio specifico di Windows e infine "source" per visualizzare rapidamente le informazioni sul commit di origine. Il comando denominato "source" presuppone che voi siate in un repository bibisect, prende l'hash di origine del commit attualmente estratto e lo invia a un comando git mirato a un clone completo del codice sorgente di LibreOffice. Per ottenere un'analisi dettagliata del comando, si eda il Bash Reference Manual. "sof" introduce un comando singolo per i repository più recenti con instdir e quelli precedenti con le directory opt.

Gli esempi precedenti non sono esclusivi dei sistemi *nix, ma funzionano bene in un ambiente cygwin su Windows. Se volete aprire documenti dalla riga di comando di cygwin, racchiudete il normale percorso di Windows tra virgolette singole in questo modo: instdir/program/soffice 'c:\users\test\downloads\example.ods'

Un altro approccio sarebbe quello di presumere che si faranno anche bibisect inversi, quindi usate "prima" e "dopo" invece di "buono" e "cattivo". Il comando soffice rimane separato e può essere sostituito con "sof" e combinato con "gen" o "skia". "skip" è utile quando LO non si avvia, ma può anche essere modificato temporaneamente quando non è possibile caricare un file specifico. "loexit" viene utilizzato con "time" per misurare il tempo di caricamento con uscita automatica.

Alias "buildc" apre la pagina web con il commit corrente, mostrando l'ora e l'autore. La funzione "build" apre master, mentre "build d376297c643785564e7bda1a74b573c35ade6cb8" controlla il commit specifico. La funzione "log 3678e0efcb8bedc58dd329a430da0ac3b1572df8" trova il commit bisect del commit di origine nel repository corrente.

Ad esempio, con quei comandi è possibile modificare in bibisect in fileopen time, incluse le vecchie versioni, come:

Automazione con script
È possibile automatizzare la bisecazione con l'aiuto di script. Il comando per eseguire bibisect è sempre lo stesso, avviamo bibisect e contrassegniamo il vecchio commit come buono e il nuovo come cattivo. Funziona per trovare una regressione e se dobbiamo trovare una soluzione, dobbiamo compensare in uno script. Il comando git bisect run viene eseguito con uno script. In un caso semplice, lo script viene eseguito dalla directory corrente e i file sono già presenti con nomi contigui. Ma lo script può essere più complesso, avere parametri ed essere predefinito per la cartella di download dei file di bug dell'utente in cui vengono utilizzati i nomi dei file originali. Ulteriori sono esempi. Lo script deve essere eseguibile.

Ecco an example con valori fissi, trovando se convert è corretto guardando la dimensione del PDF.

Ecco lo script per controllare il tempo di esportazione per qualsiasi estensione originale ed esportata, confrontandolo con un buon tempo determinato dall'utente quando si guarda ai tempi più vecchi e principali. Lo script può essere utilizzato anche per trovare una correzione, se l'ultimo parametro opzionale è una parola "correzione".

Ecco lo script per utilizzare la macro e uscire, misurando il tempo di esecuzione e confrontandolo con un buon tempo. Il vantaggio è che il file può essere modificato dall'interno. Questo script utilizza anche il controllo del tempo di timeout in caso di blocco o arresto anomalo. Il comando è più complesso in quanto consente qualsiasi nome di file. Gli stati esatti vengono trovati con i test più vecchi e i commit principali e lo script possono essere modificati di conseguenza.