2012-12-19 35 views
9

Ho appena creato un progetto Java. Voglio verificare questo progetto nella posizione SVN con l'aiuto di SVNKit.aggiungere cartelle e salvare file usando SVNKit

Uso il codice seguente, che aggiunge una cartella al repository SVN. Ma non ha creato alcuna cartella .svn nella cartella /Users/test/svnAddDirCheck.

Desidero che i file vengano sottoposti a controllo e anche in futuro voglio salvare alcuni file modificati. Senza verificare il codice sorgente, come posso fare questo? Posso aggiungere questi file in SVN così come posso trasferire direttamente qualsiasi file modificato?

@Test 
public void importWholeDir() throws Exception { 
    try { 
     DAVRepositoryFactory.setup(); 
     SVNRepositoryFactoryImpl.setup(); 
     FSRepositoryFactory.setup(); 

     String svnUrl = "https://abc.com/svn/repos/projects/test/CREATE2"; 
     File dir = new File("/Users/test/svnAddDirCheck"); 
     SVNURL url = SVNURL.parseURIDecoded(svnUrl); 
     String userName = "XXXXXXX"; 
     String userPassword = "XXXXXXXXX"; 

     importDirectoryContentToSubversion(svnUrl, dir.getPath(), userName, userPassword, "directory and file added"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static SVNCommitInfo importDirectoryContentToSubversion(final String repositoryURL, final String subVersionedDirectory, final String userName, final String hashedPassword, final String commitMessage) throws SVNException { 
    final SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions(), userName, hashedPassword); 
    return cm.getCommitClient().doImport(new File(subVersionedDirectory), SVNURL.parseURIEncoded(repositoryURL), "<import> " + commitMessage, null, false, true, SVNDepth.fromRecurse(true)); 
} 
+2

Quindi, hai importato una directory nel repository Apache Subversion. Non renderà la directory locale una copia funzionante, quindi l'unica opzione per te è quella di "svn importare" i nuovi file. ** Perché non vuoi eseguire il checkout di una copia di lavoro? ** Qual è il compito? – bahrep

+0

Sto sviluppando un'applicazione, in cui l'utente può creare un'applicazione. e ho fornito la possibilità di effettuare il check-in del loro progetto dalla mia app stessa.Ho usato il codice sopra, che aggiunge il progetto al repository, ma non sta facendo il controllo della versione per la cartella del check-in. – Muthu

+4

puoi chiamare "checkout" su questa directory dopotutto, non sovrascriverà i file esistenti. –

risposta

0

Questo è il modo in cui funziona SVN, se si vuole commettere i cambiamenti futuri è necessario per rendere la cartella locale una copia di lavoro, e per ottenere un lavoro di copiare quello che devi fare un check-out.

Un'alternativa che uso a volte è

  • creare una cartella vuota direttamente nel repository,
  • controllando che cartella cartella locale (diventando una copia di lavoro con la relativa cartella .svn)
  • quindi aggiungere e commutare i file esistenti
1

Suppongo che SVNKit stia effettivamente eseguendo una svn aggiunta al repository e non alla copia di lavoro? È corretto?

In tal caso, non è possibile aggiungere file a un repository a meno che non si disponga della cartella che conterrà i file estratti.

Anche quale versione di SVN stai usando? 1.7 non colloca più una cartella .svn in ogni cartella della tua copia di lavoro, solo nella cartella principale.

In sostanza ciò che si vuole fare, il codice pseudo è:

  1. Partenza la directory in cui si desidera aggiungere cartelle/file. Se si tratta di una cartella che contiene altri file di cartelle, è possibile verificarla con una profondità di --empty in modo da non ottenere altri file/cartelle che possono essere controllati in tale cartella.

  2. Crea la nuova cartella/file.

  3. Utilizzare il kit svn per "aggiungere" i file alla copia di lavoro.

  4. Utilizzare il kit svn per "confermare" la copia di lavoro che aggiungerà la cartella/i file al repository.

Ovviamente, il passaggio 1 deve essere eseguito solo se non lo si è già fatto. Il tuo potrebbe seguire gli stessi passi che avresti seguito manualmente. Ti suggerisco di rivedere la documentazione di svn sull'utilizzo di base. Una volta che puoi fare ciò che vuoi fare con svn.exe dovrebbe essere abbastanza facile duplicarlo usando l'API di svnkit.

Problemi correlati