Domanda

Quando si sposta un file da old.package a new.package voglio che accadano due cose:

  1. Aggiorna tutti i riferimenti a quella classe (in tutti i file del progetto) in modo che venga utilizzato il nuovo pacchetto
  2. svn move old / package / Foo.java new / package / Foo.java

Uso sovversivo in Eclipse Ganimede. Quando trascino il file da un pacchetto all'altro, tutti i riferimenti vengono aggiornati e il file viene spostato sul filesystem. Ma SVN non è a conoscenza di ciò e quindi il comando svn move old / package / foo.java new / package / Foo.java non funziona (ovviamente) quando old / package / Foo.java non esiste (perché eclipse lo ha già spostato).

C'è un modo per fare in modo che eclipse esegua il refactoring ma usando svn per spostare il file sul filesystem? Spero che mi manchi qualcosa di ovvio :-)

È stato utile?

Soluzione

Uso Subclipse e supporta lo spostamento di file tra i pacchetti

Altri suggerimenti

Ho sperimentato e penso di aver trovato la strada:

1) Tortoise: sposta il file usando il tasto destro del mouse e trascina il menu contestuale (o qualunque metodo SVN desideri).

2) Usa il filesystem di Windows per spostarlo indietro.

3) Trascina il file in Eclipse per aggiornare tutti i riferimenti.

4) Commit: mostra come cancellare / aggiungere, ma salva la cronologia e cambia i riferimenti del pacchetto in un commit (mantenendo ogni commit costruibile).

Vecchia domanda, ma continuo a ritornarci, quindi questa è la mia documentazione!

Yuval ha ragione. Sembra un deficit (molto sfortunato!) In Subversive. (Non avendo esperienza con Subversive non posso dirlo con certezza) Subclipse lo gestisce sicuramente correttamente collegandosi alle API giuste in Eclipse.

Non puoi fare entrambe le cose contemporaneamente perché spostare i file da soli non è sufficiente. I file devono essere modificati affinché il codice possa essere nuovamente compilabile. Quindi refactoring con Eclipse e lascia che Subclipse faccia la sua magia (rimuovi i vecchi file, aggiungi nuovi file) dopo lo spostamento.

Se lasci che Eclipse esegua il refactoring, sicuramente cambierà i file effettivi che SVN dovrebbe prendere quando commetti la directory principale? Non penso che una mossa lo taglierà, tuttavia SVN dovrà rilevare che il file non è presente nella sua directory originale ma aggiungerlo di nuovo dalla nuova directory. È una situazione appiccicosa, non saprei quale sia il metodo migliore, farei solo il refactoring e poi commetterei il root personalmente, anche se non sarebbe una mossa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top