Author: chatellier Date: 2011-06-09 12:04:28 +0000 (Thu, 09 Jun 2011) New Revision: 3373 Log: Avoir le status local dans getRemoteStatus (bof), deplacement dans getLocalStatus (mieux) Fix tests. Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCS.java isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCS.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCS.java 2011-06-09 10:30:14 UTC (rev 3372) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCS.java 2011-06-09 12:04:28 UTC (rev 3373) @@ -59,7 +59,7 @@ STATUS_NORMAL, STATUS_ADDED, STATUS_MODIFIED, - STATUS_DELETED, + STATUS_DELETED } /** Modified: isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java =================================================================== --- isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2011-06-09 10:30:14 UTC (rev 3372) +++ isis-fish/branches/3.3.1/src/main/java/fr/ifremer/isisfish/vcs/VCSSVN.java 2011-06-09 12:04:28 UTC (rev 3373) @@ -313,8 +313,11 @@ @Override public List<File> checkFileStatus() throws VCSException { List<File> fileInConflict = null; - + Map<File, SVNStatus> status = getRemoteStatus(null, true); + // add local missing files + status.putAll(getLocalStatus(null, true, SVNStatusType.STATUS_MISSING)); + // si des fichiers ont ete mis a jour sur le serveur on se synchronise if (status.size() > 0) { if (fireAction(VCSActionEvent.UPDATE_REPOSITORY, status.keySet() @@ -620,13 +623,11 @@ if ((acceptedStatusType.isEmpty() && status.getContentsStatus() != SVNStatusType.STATUS_NONE && status .getContentsStatus() != SVNStatusType.STATUS_NORMAL) - || acceptedStatusType.contains(status - .getContentsStatus())) { + || acceptedStatusType.contains(status.getContentsStatus())) { File statusFile = status.getFile(); - if (statusFile.exists() - && (!statusFile.isDirectory() - || status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED || status - .getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED)) { + if (!statusFile.isDirectory() || + status.getRemoteContentsStatus() == SVNStatusType.STATUS_ADDED || + status.getRemoteContentsStatus() == SVNStatusType.STATUS_DELETED) { // on ne met pas les repertoires pere dans le status // car en fait ca veut dire qu'un fichier/rep dans ce // repertoire a ete ajout/modifier/delete, et on l'aura @@ -662,7 +663,6 @@ * <ul> * <li>SVNStatusType.STATUS_ADDED (remote) pour ajout local * <li>SVNStatusType.STATUS_DELETED (remote) pour suppression locale - * <li>SVNStatusType.MISSING (local) pour restauration * </ul> * * @param file @@ -687,12 +687,12 @@ + status.getRemoteContentsStatus() + " lstatus:" + status.getContentsStatus()); } - if (status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_ADDED) || - status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_DELETED) || - status.getContentsStatus().equals(SVNStatusType.STATUS_MISSING)) { - + if (!status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_NONE) && + !status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_NORMAL)) { File statusFile = status.getFile(); - if (!statusFile.isDirectory()) { + if (!statusFile.isDirectory() || + status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_ADDED) || + status.getRemoteContentsStatus().equals(SVNStatusType.STATUS_DELETED)) { // on ne met pas les repertoires pere dans le status // car en fait ca veut dire qu'un fichier/rep dans ce // repertoire a ete ajout/modifier/delete, et on l'aura Modified: isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java =================================================================== --- isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2011-06-09 10:30:14 UTC (rev 3372) +++ isis-fish/branches/3.3.1/src/test/java/fr/ifremer/isisfish/vcs/VCSSVNTest.java 2011-06-09 12:04:28 UTC (rev 3373) @@ -51,6 +51,7 @@ import org.tmatesoft.svn.core.wc.SVNCopySource; import org.tmatesoft.svn.core.wc.SVNRevision; import org.tmatesoft.svn.core.wc.SVNStatus; +import org.tmatesoft.svn.core.wc.SVNStatusType; import org.tmatesoft.svn.core.wc.SVNUpdateClient; import org.tmatesoft.svn.core.wc.SVNWCClient; @@ -962,8 +963,7 @@ vcs.checkout(null, false); // now, make a modification, on REMOTE repo - SVNURL svnURL = SVNURL.parseURIDecoded("file://" - + remoteRepo.getAbsolutePath()); + SVNURL svnURL = SVNURL.parseURIDecoded("file://" + remoteRepo.getAbsolutePath()); SVNURL svnURLNewDir = svnURL.appendPath("isis-fish-data", false) .appendPath("trunk", false).appendPath("test", false); SVNClientManager svnManager = SVNClientManager.newInstance(); @@ -1253,7 +1253,7 @@ * @throws IOException */ @Test - public void testGetLocalStatus() throws VCSException, SVNException, + public void testGetLocalStatusModified() throws VCSException, SVNException, IOException { // log @@ -1271,4 +1271,36 @@ Assert.assertEquals(Status.STATUS_MODIFIED, vcs.getLocalStatus(file)); } + + /** + * Test file local status. + * + * - Checkout + * - delete file (file system delete) + * - tests + * + * @throws VCSException + * @throws SVNException + * @throws IOException + */ + @Test + public void testGetLocalStatusMissing() throws VCSException, SVNException, + IOException { + + // log + if (log.isInfoEnabled()) { + log.info("testGetLocalStatus()"); + } + + // chechout + vcs.checkout(null, false); + + // modif on remote repo + File file = new File(vcs.getLocalRepository(), "scripts" + + File.separator + "version.txt"); + file.delete(); + + Map<File, SVNStatus> statusFiles = vcs.getLocalStatus(file, true, SVNStatusType.STATUS_MISSING); + Assert.assertEquals(1, statusFiles.size()); + } } \ No newline at end of file