Condividi tramite


Concetti di base nell'integrazione Git

Questo articolo illustra i concetti di base di Git e il processo di integrazione di Git con l'area di lavoro di Microsoft Fabric.

Autorizzazioni

  • L'amministratore dell'organizzazione deve abilitare l'integrazione Git.
  • L'amministratore del tenant deve abilitare l'esportazione interregionale se l'area di lavoro e il repository di Azure si trovano in due regioni diverse. Questa restrizione non si applica a GitHub.
  • Le autorizzazioni disponibili sia nell'area di lavoro che in Git, come elencato nelle sezioni successive, determinano le azioni che è possibile eseguire.

L'elenco seguente mostra cosa possono fare i ruoli dell'area di lavoro a seconda delle relative autorizzazioni nel repository Git:

  • Amministratore: può eseguire qualsiasi operazione nell'area di lavoro, limitato solo dal ruolo Git.
  • Membro/Contributore: dopo la connessione a un'area di lavoro, un membro/contributore può eseguire il commit e aggiornare le modifiche, a seconda del proprio ruolo Git. Per le azioni correlate alla connessione all'area di lavoro (ad esempio, connessione, disconnessione o modifica dei rami), chiedere aiuto a un amministratore.
  • Visualizzatore: non può eseguire alcuna azione. Il visualizzatore non può vedere informazioni correlate a Git nell'area di lavoro.

Ruoli dell'area di lavoro

Nella tabella seguente vengono descritte le autorizzazioni necessarie nell'area di lavoro di Fabric per eseguire varie operazioni comuni:

Operazione Ruolo dell'area di lavoro
Connettere l'area di lavoro al repository Git. Amministratore
Sincronizzare l'area di lavoro con il repository Git Amministratore
Disconnettere l'area di lavoro dal repository Git Amministratore
Cambiare ramo nell'area di lavoro (o qualsiasi modifica nell'impostazione di connessione) Amministratore
Visualizzare i dettagli della connessione Git Amministratore, Membro, Contributore
Vedere lo "Stato Git" dell'area di lavoro Amministratore, Membro, Contributore
Aggiornare da Git Tutti i ruoli seguenti:

Contributore nell'area di lavoro (permesso di scrittura su tutti gli elementi)

Proprietario dell'elemento (se l'opzione del tenant blocca gli aggiornamenti per i non proprietari)

Costruire sulle dipendenze esterne (ove applicabile)
Confermare le modifiche dell'area di lavoro in Git Tutti i ruoli seguenti:

Contributore nell'area di lavoro (permesso di scrittura su tutti gli elementi)

Proprietario dell'elemento (se l'opzione del tenant blocca gli aggiornamenti per i non proprietari)

Costruire sulle dipendenze esterne (ove applicabile)
Creare un nuovo ramo Git dall'interno di Fabric Amministratore
Passare a un'altra area di lavoro Amministratore, Membro, Contributore

Ruoli Git

Nella tabella seguente vengono descritte le autorizzazioni Git necessarie per eseguire varie operazioni comuni:

Operazione Autorizzazioni Git
Connettere l'area di lavoro al repository Git. Leggere=Consenti
Sincronizzare l'area di lavoro con il repository Git Lettura=Consentita
Disconnettere l'area di lavoro dal repository Git Non sono necessarie autorizzazioni
Cambiare ramo nell'area di lavoro (o qualsiasi modifica nell'impostazione di connessione) Lettura=Permetti (nel repository/directory/ramo di destinazione)
Visualizzare i dettagli della connessione Git Lettura o nessuna
Vedere lo "Stato Git" dell'area di lavoro Leggi=Consenti
Aggiornare da Git Leggi=Consentito
Confermare le modifiche dell'area di lavoro in Git Lettura=Consentita
Contribuzione=Consentita
i criteri di ramo devono consentire il commit diretto
Creare un nuovo ramo Git dall'interno di Fabric Ruolo=Scrittore
Crea ramo=Consentita
Passare a un'altra area di lavoro Lettura=Consentita
Crea ramo=Consentita

Connetti e sincronizza

Solo un amministratore dell'area di lavoro può connettere un'area di lavoro a repository Git, ma una volta effettuata la connessione, chiunque abbia le autorizzazioni può lavorare nell'area di lavoro. Se non si è un amministratore, chiedere assistenza all'amministratore per la connessione.

Quando si connette un'area di lavoro a Git, Fabric esegue la sincronizzazione tra le due posizioni in modo che abbiano lo stesso contenuto. Durante la sincronizzazione iniziale, se l'area di lavoro o il ramo Git è vuoto mentre l'altro dispone di contenuto, il contenuto viene copiato dalla posizione non vuota a quella vuota. Se sia l'area di lavoro che il ramo Git hanno contenuto, occorre decidere in quale direzione deve andare la sincronizzazione.

  • Se si esegue il commit dell'area di lavoro nel ramo Git, tutto il contenuto supportato dell'area di lavoro viene esportato in Git e sovrascrive il contenuto Git corrente.
  • Se si aggiorna l'area di lavoro con il contenuto Git, il contenuto dell'area di lavoro viene sovrascritto e si perde il contenuto dell'area di lavoro. Poiché un ramo Git può sempre essere ripristinato a una fase precedente, mentre non si può fare per un'area di lavoro, se si sceglie questa opzione, viene richiesta la conferma.

Screenshot della finestra di dialogo che chiede in quale direzione sincronizzare se Git e l'area di lavoro dispongono di contenuto.

Se non si seleziona il contenuto da sincronizzare, non è possibile continuare a lavorare.

Screenshot della notifica che indica che non puoi continuare a lavorare finché l'area di lavoro non è sincronizzata.

Cartelle

Nota

Se l'area di lavoro contiene cartelle e la cartella Git connessa non include ancora sottocartelle, vengono considerate diverse. Ottieni lo stato modifiche non impegnate nel pannello di controllo del codice sorgente ed è necessario eseguire il commit delle modifiche in Git prima di aggiornare l'area di lavoro. Se si esegue prima l'aggiornamento, la struttura di cartelle Git sovrascrive la struttura di cartelle dell'area di lavoro. Per altre informazioni, vedere Gestione delle modifiche alle cartelle in modo sicuro.

Gestione delle modifiche alle cartelle in modo sicuro

Se l'area di lavoro contiene cartelle e la cartella Git connessa non include ancora sottocartelle, vengono considerate diverse perché la struttura delle cartelle è diversa. Quando si connette un'area di lavoro con cartelle a Git, viene visualizzato uno stato di modifiche non committate nel pannello di controllo delle versioni ed è necessario fare il commit delle modifiche su Git prima di aggiornare l'area di lavoro.

Se non è possibile apportare modifiche direttamente al branch connesso, a causa di politica del branch o autorizzazioni, è consigliabile usare l'opzione Checkout Branch:

  1. Checkout a New Branch: usare la funzionalità di checkout del ramo per creare un ramo con lo stato aggiornato dell'area di lavoro Fabric.
  2. Commit delle modifiche alle cartelle: qualsiasi modifica alle cartelle dell'area di lavoro può quindi essere sottoposta a commit in questo nuovo ramo.
  3. Modifiche di merge: usare la normale richiesta pull e i processi di merge per integrare nuovamente questi aggiornamenti nel ramo originale.

Connettersi a un'area di lavoro condivisa

Se si tenta di connettersi a un'area di lavoro già connessa a Git, si potrebbe ricevere il messaggio seguente:

Screenshot del messaggio di errore che indica di accedere a un account Git.

Passare alla scheda Account sul lato destro del pannello di controllo del codice sorgente, scegliere un account e connettersi a esso.

Screenshot della scheda

Git status

Dopo la connessione, l'area di lavoro mostra una colonna di stato Git che indica lo stato di sincronizzazione di ogni elemento nell'area di lavoro in relazione agli elementi nel ramo remoto.

Screenshot degli elementi in un'area di lavoro con lo stato di Git evidenziato.

Ogni elemento ha uno degli stati seguenti:

  • Sincronizzato (l'elemento è lo stesso nell'area di lavoro e nel ramo Git)
  • Conflitto (l'elemento è stato modificato sia nell'area di lavoro che nel ramo Git)
  • Elemento non supportato
  • Modifiche non sottoposte a commit nell'area di lavoro
  • Aggiornamento obbligatorio da Git
  • L'elemento è identico in entrambe le posizioni, ma deve essere aggiornato all'ultimo commit

Informazioni di sincronizzazione

Purché sia stata effettuata la connessione, nella parte inferiore della schermata appaiono le informazioni seguenti:

  • Filiale connessa
  • Ora dell'ultima sincronizzazione
  • Collegamento all'ultimo commit a cui è sincronizzata l'area di lavoro

Screenshot delle informazioni di sincronizzazione che appaiono nella parte inferiore della schermata quando si è connessi a Git.

Pannello di controllo del codice sorgente

Nella parte superiore della schermata è presente l'icona del controllo del codice sorgente. Mostra il numero di elementi diversi nell'area di lavoro e nel ramo Git. Quando vengono apportate modifiche all'area di lavoro o al ramo Git, il numero viene aggiornato. Quando l'area di lavoro viene sincronizzata al ramo Git, l'icona del controllo del codice sorgente mostra uno 0.

Screenshot dell'icona di gestione del codice che mostra nessun elemento modificato.

Selezionare l'icona del Controllo del codice sorgente per aprire il pannello di controllo del codice sorgente.

Il riquadro di controllo del codice sorgente ha tre schede sul lato:

Commit e aggiornamenti

Quando vengono apportate modifiche all'area di lavoro o al ramo Git, l'icona del controllo del codice sorgente mostra il numero di elementi diversi. Selezionare l'icona del Controllo del codice sorgente per aprire il pannello di controllo del codice sorgente.

Il pannello Commit e aggiornamenti include due sezioni.

Le modifiche mostrano il numero di elementi modificati nell'area di lavoro ed è necessario eseguire il commit in Git.
Gli aggiornamenti mostrano il numero di elementi modificati nel ramo Git e devono essere aggiornati all'area di lavoro.

In ogni sezione, gli elementi modificati sono elencati con un'icona che indica lo stato:

  • nuovo
  • modificato
  • eliminato
  • conflitto

Il pulsante Aggiorna, situato nella parte superiore del pannello, aggiorna l'elenco delle modifiche e degli aggiornamenti.

Screenshot del pannello di controllo del codice sorgente che mostra lo stato degli elementi modificati.

Eseguire il commit

  • Gli elementi modificati nell'area di lavoro sono elencati nella sezione Modifiche. Quando sono presenti più elementi modificati, è possibile selezionare gli elementi di cui eseguire il commit nel ramo Git.
  • Se sono stati apportati aggiornamenti al ramo Git, i commit vengono disabilitati fino a quando non si aggiorna l'area di lavoro.

Aggiornamento

  • A differenza di Commit e Annulla, il comando Aggiorna permette di aggiornare sempre l'intero ramo e sincronizza al commit più recente. Non è possibile selezionare elementi specifici da aggiornare.
  • Se sono state apportate modifiche nell'area di lavoro e nel ramo Git nello stesso elemento, gli aggiornamenti vengono disabilitati fino a quando il conflitto non viene risolto.

Altre informazioni su come eseguire il commit e l'aggiornamento. Altre informazioni sul processo di aggiornamento e su come risolvere i conflitti.

Rami

La scheda Rami del pannello di controllo del codice sorgente consente di gestire i rami ed eseguire azioni correlate ai rami. Ha due sezioni principali:

  • Azioni che si possono eseguire nel ramo corrente:

    • Ampliare in un'altra area di lavoro (collaboratore e versioni successive): crea una nuova area di lavoro o passa a un'area di lavoro esistente in base all'ultimo commit nell'area di lavoro attuale. Si connette quindi all'area di lavoro e al ramo di destinazione.
    • Checkout new branch (devi essere un amministratore dell'area di lavoro): crea un nuovo ramo basato sull'ultimo commit sincronizzato nell'area di lavoro e aggiorna la connessione Git nell'area di lavoro corrente. Non modifica il contenuto dell'area di lavoro.
    • Ramo switch (deve essere amministratore dell'area di lavoro): sincronizza l'area di lavoro con un altro ramo nuovo o esistente ed esegue l'override di tutti gli elementi nell'area di lavoro con il contenuto del ramo selezionato.

    Screenshot della scheda 'Branch Out' nel pannello di controllo del codice sorgente.

  • Rami correlati.
    La scheda Rami include anche un elenco di aree di lavoro correlate che puoi selezionare e passare a. Un'area di lavoro correlata è una con le stesse proprietà di connessione del ramo attuale, ad esempio la stessa organizzazione, progetto, repository e cartella Git.
    Questa funzionalità consente di passare alle aree di lavoro connesse ad altri rami correlati al contesto del lavoro corrente, senza doverli cercare nell'elenco di aree di lavoro di Fabric.
    Per aprire l'area di lavoro pertinente, selezionare l'elemento nell'elenco.

    Screenshot che mostra un elenco di rami correlati a cui l'utente può passare.

Per altre informazioni, vedere Limitazioni di diramazione.

Dettagli dell'account

La scheda Dettagli dell'account mostra i dettagli dell'account GitHub a cui l'utente è connesso. Ha due sezioni. La sezione superiore mostra il provider Git e il nome dell'account. La sezione inferiore mostra il repository e il ramo a cui è connessa l'area di lavoro. Attualmente, questa scheda è disponibile solo per le aree di lavoro connesse a GitHub.

I dettagli dell'account GitHub includono:

  • Dettagli dell'account Git

    • Fornitore
    • Account name
  • Git repository

  • Ramo

Screenshot della scheda Account nel pannello di controllo del codice sorgente che mostra i dettagli Git e i nomi dei repository e dei rami.

Considerazioni e limitazioni

Limitazioni generali per l'integrazione di Git

  • Il metodo di autenticazione in Fabric deve essere almeno sicuro quanto il metodo di autenticazione per Git. Ad esempio, se Git richiede l'autenticazione a più fattori, anche Fabric deve richiedere l'autenticazione a più fattori.
  • I set di dati di Power BI connessi ad Analysis Services non sono attualmente supportati.
  • Le aree di lavoro con app modello installate non possono essere connesse a Git.
  • I moduli secondari non sono supportati.
  • I cloud sovrani non sono supportati.
  • L'account Azure DevOps deve essere registrato allo stesso utente che usa l'area di lavoro di Fabric.
  • Azure DevOps non è supportato se la convalida dei criteri di accesso condizionale IP è abilitata.
  • L'amministratore tenant deve abilitare le esportazioni tra aree geografiche se l'area di lavoro e il repository Git si trovano in due aree geografiche diverse.
  • Se l'organizzazione ha configurato l'accesso condizionale , si assicuri che il servizio Power BI abbia le stesse condizioni impostate affinché l'autenticazione funzioni come previsto.
  • La dimensione del commit è limitata a 125 MB.

Limitazioni di GitHub Enterprise

Alcune impostazioni di GitHub Enterprise non sono supportate. Ad esempio:

Limitazioni dell'area di lavoro

  • Solo l'amministratore dell'area di lavoro può gestire le connessioni al repository Git, come la connessione, la disconnessione o l'aggiunta di un ramo.
    Dopo la connessione, chiunque disponga dell'autorizzazione può lavorare nell'area di lavoro.

Limitazioni dei rami e delle cartelle

  • La lunghezza massima del nome del ramo è di 244 caratteri.
  • La lunghezza massima del percorso completo per i nomi dei file è di 250 caratteri. I nomi più lunghi falliscono.
  • La dimensione massima del file è di 25 MB.
  • La struttura delle cartelle viene mantenuta fino a una profondità di 10 livelli.
  • Non è possibile scaricare un report o un set di dati in formato .pbix dal servizio dopo la distribuzione con l'integrazione git.
  • Se il nome visualizzato dell'elemento presenta una di queste caratteristiche, la cartella Git viene rinominata con l'ID logico (Guid) e il tipo:
    • Ha più di 256 caratteri
    • Termina con un . o uno spazio
    • Contiene qualsiasi carattere non consentito, come descritto nelle limitazioni del nome della directory
  • Quando si connette un'area di lavoro con cartelle a Git, è necessario eseguire il commit delle modifiche al repository Git se tale struttura di cartelle è diversa.

Limitazioni sui nomi delle directory

  • Il nome della directory che si connette al repository Git presenta le restrizioni di denominazione seguenti:

    • Il nome della directory non può iniziare o terminare con uno spazio o una scheda.
    • Il nome della directory non può contenere i caratteri seguenti: "/:<>\*?|
  • La cartella dell'elemento (la cartella contenente i file di elemento) non può contenere i caratteri seguenti: ":<>\*?|. Se si rinomina la cartella in un elemento che include uno di questi caratteri, Git non può connettersi o sincronizzare con l'area di lavoro e si verifica un errore.

Limitazioni sull'espansione

  • L'azione di diramare richiede le autorizzazioni elencate nella tabella delle autorizzazioni.
  • Per questa azione deve esserci una capacità disponibile.
  • Tutte le limitazioni di denominazione dei rami e dell'area di lavoro si applicano quando si esegue la diramazione in una nuova area di lavoro.
  • Nella nuova area di lavoro sono disponibili solo gli elementi supportati da Git.
  • L'elenco dei rami correlati mostra solo rami e aree di lavoro per cui si dispone dell'autorizzazione per la visualizzazione.
  • L'integrazione Git deve essere abilitata.
  • Quando si esegue la diramazione, viene creato un nuovo ramo e le impostazioni del ramo originale non vengono copiate. Modificare le impostazioni o le definizioni per assicurarsi che il nuovo soddisfi i criteri dell'organizzazione.
  • Quando si esegue la diramazione in un'area di lavoro esistente:
    • L'area di lavoro di destinazione deve supportare una connessione Git.
    • L'utente deve essere un amministratore dell'area di lavoro di destinazione.
    • L'area di lavoro di destinazione deve avere capacità.
    • L'area di lavoro non può avere applicazioni modello.
  • Si noti che quando si apre un nuovo ramo in un'area di lavoro, eventuali elementi che non vengono salvati in Git rischiano di andare persi. È consigliabile effettuare il commit di tutti gli elementi che si desidera mantenere prima di creare un ramo.

Limitazioni di sincronizzazione e commit

  • È possibile eseguire la sincronizzazione in una sola direzione alla volta. Non è possibile eseguire il commit e l'aggiornamento contemporaneamente.
  • Le etichette di riservatezza non sono supportate e l'esportazione di elementi con etichette di riservatezza potrebbe essere disabilitata. Per eseguire il commit di elementi con etichette di riservatezza senza l'etichetta di riservatezza, chiedere assistenza all'amministratore.
  • Funziona con elementi limitati. Gli elementi non supportati nella cartella vengono ignorati.
  • La duplicazione dei nomi non è consentita. Anche se Power BI consente la duplicazione dei nomi, l'azione di aggiornamento, commit o annullamento ha esito negativo.
  • B2B non è supportato.
  • La risoluzione del conflitto viene eseguita parzialmente in Git.
  • Durante il processo Commit in Git, il servizio di Fabric elimina i file all'interno della cartella dell'elemento che non fanno parte della definizione dell'elemento. I file non correlati non presenti in una cartella di elementi non vengono eliminati.
  • Dopo aver confermato le modifiche, potresti notare alcune modifiche impreviste all'elemento che non hai apportato. Queste modifiche sono semanticamente insignificanti e possono verificarsi per diversi motivi. Ad esempio:
    • Modificare manualmente il file di definizione dell'elemento. Queste modifiche sono valide, ma potrebbero essere diverse da quelle eseguite tramite gli editor. Ad esempio, se si rinomina una colonna del modello semantico in Git e si importa questa modifica nell'area di lavoro, al successivo commit delle modifiche apportate al modello semantico, il file bim verrà registrato come modificato e la colonna modificata verrà riportata alla fine della matrice columns. Questo perché il motore AS che genera i file bim sposta le colonne rinominate alla fine dell'array. Questa modifica non influisce sul funzionamento dell'elemento.
    • Eseguire il commit di un file che utilizza interruzioni di riga CRLF. Il servizio usa interruzioni di riga LF (line feed). Se nel repository Git fossero presenti file di elementi con interruzioni di riga CRLF, quando si esegue il commit dal servizio questi file verrebbero modificati in LF. Ad esempio, se si apre un report sul desktop, salvare il file di progetto (pbip ) e caricarlo in Git usando CRLF.
  • L'aggiornamento di un modello semantico tramite l'API Aggiornamento avanzato causa una differenza di Git dopo ogni aggiornamento.