16

Abbiamo deciso di seguire il processo di creazione di un nuovo ramo SVN per ogni nuova funzionalità che aggiungiamo alla nostra app mobile. L'obiettivo finale dietro questo è preservare la cronologia per ogni singolo cambio di codice (questo non accade quando copiamo manualmente le cartelle di progetto in SVN invece di creare & rami di unione).Studio Android: impossibile da unire dal ramo SVN

Il mio problema è che finora non riesco a unire le modifiche da un ramo all'altro.

Ho già accennato i seguenti posti senza successo:

Ecco quello che ho provato finora:

ho due funzionalità rami come si può vedere qui di seguito in Tortoise SVN:

enter image description here

voglio unire le modifiche nel ramo Feature_A3 nel ramo Feature_A2. Per fare questo, sto usando l'opzione Merge from a VCS di Android Studio dalla copia di lavoro A2:

enter image description here

E poi mi chiede di selezionare il ramo di unire da (A3) o configurare altri rami:

enter image description here

clicco su Configurare rami, solo per mostrare la configurazione ramo esistente:

enter image description here

Come si può vedere, A2 è il Tronco e A3 è la Branch. È corretto?

Poi mi chiede quale parte di A3 voglio unire in A2.I selezionare la directory /src (dove i cambiamenti rilevanti sono presenti):

enter image description here

E poi generosamente mi dà tre modi diversi per eseguire l'operazione di unione:

enter image description here

seleziono il terzo opzione in quanto mi dà direttamente le modifiche che ho bisogno di unire:

enter image description here

Ho cliccato su Unisci selezionato e BAM !!! ottengo questo errore ogni volta:

enter image description here

Non v'è alcun indizio su ciò che i "conflitti irrisolti" o "elementi ignorati" sono. Perché ricevo questo errore e cosa devo fare per unire le modifiche in A3 in A2 ??? Qualcuno può aiutarmi per favore ? Tutte le risposte saranno apprezzate. Grazie ...

Ho seguito l'IntelliJ IDEA documentazione ufficiale di seguito:

prega di notare che:

  • Attualmente sto usando Subversion, non Git.

  • La struttura di directory delle mie copie di lavoro locali non è esattamente uguale a identica a quella dei repository SVN. Questa potrebbe essere la causa dell'errore?

la risposta ...

Grazie a Peter Parker e soprattutto Yoav Aharoni per il loro prezioso feedback. Come ha giustamente sottolineato Yoav, era in effetti il ​​modo in cui veniva specificata la cartella delle ubicazioni delle filiali. Deve essere la cartella che contiene i rami, non le stesse cartelle delle filiali: e come ha giustamente detto Peter, spuntando "Includi revisioni unite" mostra la cronologia unita. Ora sono in grado di unire dall'interno dell'IDE e visualizzare la cronologia unita in TortoiseSVN. NESSUNA linea di comando! YAY !!!

Tuttavia, un ultimo problema è che non riesco a visualizzare la cronologia unita in Android Studio (Intellij IDEA) come descritto in Viewing Merge Sources. Qualcuno sa come ottenere ciò in Android Studio?

+2

Hai provato con cmd-line o TortoiseSVN? Il messaggio di errore potrebbe essere più eloquente e forse a questo IDE mancano alcune funzionalità relative a svn (che non è così raro). –

+0

Sì, sembra funzionare con Tortoise SVN, ma anche se le modifiche vengono unite, la cronologia dal ramo di origine non si riflette nel ramo di destinazione dopo l'unione, che era l'obiettivo da cui iniziare ... Come posso unire il cambia E la cronologia dal ramo di origine si riflette nel ramo di destinazione? –

+1

hai selezionato "include revisioni unite" nella finestra di dialogo TSVN? –

risposta

6

Uff, non hanno usato SVN in un po '... :)

Ma da quello che mi ricordo Branch locations dovrebbe essere la cartella contenente tuoi rami cartelle (e non ogni cartella singolo ramo).

Vedete, in genere un repo SVN segue una convenzione di denominazione e la cartella struttura standard:

trunk/ 
branches/ 
    Feature_A2/ 
    Feature_A3/ 
tags/ 
    v1.01/ 
    v1.02/ 

and so on... 

trunk è dove lo sviluppo principale si svolge, e branches sono per caratteristiche, a lungo termine o progetti rischiosi, o per diverse fasi (come QA e pre-prod).

Quindi, per quanto mi ricordo, Android Studio prevede di impostare la cartella Branch locations nella cartella branches. Nel tuo caso penso che dovrebbe essere http://192.168.0.64/svn/.../Android/Feature.

Inoltre, il tuo trunk non è Feature_A2 - Feature_A2 è solo un altro ramo.
Anche se non riesco a vedere il contenuto, penso che http://192.168.0.64/svn/.../Android/Development potrebbe essere il tuo baule.

Il che non dovrebbe infastidire molto, poiché non è necessario unire al tronco, è possibile anche unire tra i rami (ad esempio, unire Feature_A3 in Feature_A2).

Quindi, per ricapitolare:

  1. Anche se non obbligatorio, vi consiglio di rinominare le cartelle per abbinare le convenzioni (si può facilmente farlo facendo clic destro in Tortoise SVN, ma solo dopo che tutti i compagni di squadra impegnarsi, in caso contrario si fondono sarà un inferno per loro).
  2. provare a impostare Branch locations-http://192.168.0.64/svn/.../Android/Feature
  3. E Trunk-http://192.168.0.64/svn/.../Android/Development (solo se contiene infatti le fonti, simili a Feature_A2/3)
  4. Considerare "etichettare" le vostre uscite in una cartella tags (è praticamente solo la copia del trunk/branch folder to tags, ma hai un comando per questo).

    Se lo fai, puoi anche aggiungere la cartella tags a Branch locations, in questo modo sarai in grado di confrontare la tua sorgente corrente con qualsiasi versione precedente (che è utile).

P.S: "unresolved conflicts" error può anche significare di avere conflitti irrisolti (duh :)). I conflitti vengono in genere creati quando tu e un compagno di squadra cambiano le stesse linee nel file (o se cancella un file che hai modificato) e aggiorni per ottenere le sue modifiche.

SVN non consente di unire fino a quando non si risolvono manualmente questi conflitti/modifiche.

È possibile trovare i conflitti nella scheda Version Control nella parte inferiore, saranno contrassegnati in rosso.
(Ma non credo che era il problema nel tuo caso)


Fatemi sapere se funziona per voi!

+1

Mille grazie per la tua risposta assolutamente corretta! Grazie a te, sono in grado di unire dall'IDE piuttosto che dalla riga di comando, che è quello che volevo. Era davvero la cartella contenente tutti i rami collettivamente ... :) –

2

Non sono un esperto SVN, ma penso che sarà necessario modificare la struttura della directory. Credo che anche se è solo una convenzione, svn usa la struttura delle directory per unire i rami.Così la vostra directory struttura dovrebbe essere:

SVN 
    /Android 
     /branches 
     /production 
     /featureA2 
     /featureA3 
     /tags 
     /trunk 
    /IOS 
     /branches 
     /production 
     /featureA2 
     /featureA3 
     /tags 
     /trunk 

Anche se il TortoiseSVN Repo-browser vi permetterà di spostare le directory in giro, un sacco di meta-dati vengono memorizzati su ogni directory e viene utilizzato per gestire il processo di unione, quindi potresti dover riavviare il tuo repo. Vedere lo subversion best practices guide e lo strategories for repository layout per ulteriori dettagli su come configurare i propri repository. Detto questo, esiterei a fare affidamento sull'integrazione svn di Android Studio per eseguire operazioni di sollevamento come fusione di rami (sebbene la maggior parte degli strumenti di JetBrains sia fantastica), la gestione di SVN lascia molto a desiderare.

+1

Questo non è vero. SVN non si basa su una struttura di directory specifica. Serve aiuto dai metadati memorizzati in una proprietà chiamata "mergeinfo", ma anche i lavori di fusione senza questo. –

+0

@KrisErickson: grazie per aver trovato il tempo di rispondere. Approfondirò ulteriormente e tornerò da te ... :) –