Mercurial > jhg
annotate src/org/tmatesoft/hg/repo/HgWorkingCopyStatusCollector.java @ 128:44b97930570c
Introduced ChangelogHelper to look up changesets files were modified in
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Wed, 16 Feb 2011 20:13:41 +0100 | 
| parents | b19f0ac5ee62 | 
| children | 4a948ec83980 | 
| rev | line source | 
|---|---|
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 1 /* | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 2 * Copyright (c) 2011 TMate Software Ltd | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 3 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 4 * This program is free software; you can redistribute it and/or modify | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 5 * it under the terms of the GNU General Public License as published by | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 6 * the Free Software Foundation; version 2 of the License. | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 7 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 8 * This program is distributed in the hope that it will be useful, | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 11 * GNU General Public License for more details. | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 12 * | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 13 * For information on how to redistribute this software under | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 14 * the terms of a license other than GNU General Public License | 
| 102 
a3a2e5deb320
Updated contact address to support@hg4j.com
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
94diff
changeset | 15 * contact TMate Software at support@hg4j.com | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 16 */ | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 17 package org.tmatesoft.hg.repo; | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 18 | 
| 120 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 19 import static java.lang.Math.max; | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 20 import static java.lang.Math.min; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 21 import static org.tmatesoft.hg.repo.HgRepository.BAD_REVISION; | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 22 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 23 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 24 import java.io.File; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 25 import java.io.FileInputStream; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 26 import java.io.IOException; | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 27 import java.nio.ByteBuffer; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 28 import java.nio.channels.FileChannel; | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 29 import java.util.Collections; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 30 import java.util.Set; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 31 import java.util.TreeSet; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 32 | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 33 import org.tmatesoft.hg.core.Nodeid; | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 34 import org.tmatesoft.hg.core.Path; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 35 import org.tmatesoft.hg.internal.FilterByteChannel; | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 36 import org.tmatesoft.hg.repo.HgStatusCollector.ManifestRevisionInspector; | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 37 import org.tmatesoft.hg.util.ByteChannel; | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 38 import org.tmatesoft.hg.util.FileWalker; | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 39 import org.tmatesoft.hg.util.PathPool; | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 40 import org.tmatesoft.hg.util.PathRewrite; | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 41 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 42 /** | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 43 * | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 44 * @author Artem Tikhomirov | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 45 * @author TMate Software Ltd. | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 46 */ | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 47 public class HgWorkingCopyStatusCollector { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 48 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 49 private final HgRepository repo; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 50 private final FileWalker repoWalker; | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 51 private HgDirstate dirstate; | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 52 private HgStatusCollector baseRevisionCollector; | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 53 private PathPool pathPool; | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 54 | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 55 public HgWorkingCopyStatusCollector(HgRepository hgRepo) { | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 56 this(hgRepo, hgRepo.createWorkingDirWalker()); | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 57 } | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 58 | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 59 HgWorkingCopyStatusCollector(HgRepository hgRepo, FileWalker hgRepoWalker) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 60 this.repo = hgRepo; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 61 this.repoWalker = hgRepoWalker; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 62 } | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 63 | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 64 /** | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 65 * Optionally, supply a collector instance that may cache (or have already cached) base revision | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 66 * @param sc may be null | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 67 */ | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 68 public void setBaseRevisionCollector(HgStatusCollector sc) { | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 69 baseRevisionCollector = sc; | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 70 } | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 71 | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 72 /*package-local*/ PathPool getPathPool() { | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 73 if (pathPool == null) { | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 74 if (baseRevisionCollector == null) { | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 75 pathPool = new PathPool(new PathRewrite.Empty()); | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 76 } else { | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 77 return baseRevisionCollector.getPathPool(); | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 78 } | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 79 } | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 80 return pathPool; | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 81 } | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 82 | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 83 public void setPathPool(PathPool pathPool) { | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 84 this.pathPool = pathPool; | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 85 } | 
| 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 86 | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 87 | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 88 private HgDirstate getDirstate() { | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 89 if (dirstate == null) { | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 90 dirstate = repo.loadDirstate(); | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 91 } | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 92 return dirstate; | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 93 } | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 94 | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 95 // may be invoked few times | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 96 public void walk(int baseRevision, HgStatusInspector inspector) { | 
| 91 
c2ce1cfaeb9e
ignore file with regex and 'honest' glob support
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
90diff
changeset | 97 final HgIgnore hgIgnore = repo.getIgnore(); | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 98 TreeSet<String> knownEntries = getDirstate().all(); | 
| 68 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 99 final boolean isTipBase; | 
| 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 100 if (baseRevision == TIP) { | 
| 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 101 baseRevision = repo.getManifest().getRevisionCount() - 1; | 
| 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 102 isTipBase = true; | 
| 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 103 } else { | 
| 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 104 isTipBase = baseRevision == repo.getManifest().getRevisionCount() - 1; | 
| 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 105 } | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 106 HgStatusCollector.ManifestRevisionInspector collect = null; | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 107 Set<String> baseRevFiles = Collections.emptySet(); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 108 if (!isTipBase) { | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 109 if (baseRevisionCollector != null) { | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 110 collect = baseRevisionCollector.raw(baseRevision); | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 111 } else { | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 112 collect = new HgStatusCollector.ManifestRevisionInspector(); | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 113 repo.getManifest().walk(baseRevision, baseRevision, collect); | 
| 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 114 } | 
| 89 
42bcb4bffd17
Refactored to simplify manifest collector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
76diff
changeset | 115 baseRevFiles = new TreeSet<String>(collect.files()); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 116 } | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 117 if (inspector instanceof HgStatusCollector.Record) { | 
| 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 118 HgStatusCollector sc = baseRevisionCollector == null ? new HgStatusCollector(repo) : baseRevisionCollector; | 
| 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 119 ((HgStatusCollector.Record) inspector).init(baseRevision, BAD_REVISION, sc); | 
| 68 
0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
63diff
changeset | 120 } | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 121 repoWalker.reset(); | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 122 final PathPool pp = getPathPool(); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 123 while (repoWalker.hasNext()) { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 124 repoWalker.next(); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 125 String fname = repoWalker.name(); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 126 File f = repoWalker.file(); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 127 if (hgIgnore.isIgnored(fname)) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 128 inspector.ignored(pp.path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 129 } else if (knownEntries.remove(fname)) { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 130 // modified, added, removed, clean | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 131 if (collect != null) { // need to check against base revision, not FS file | 
| 90 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 132 checkLocalStatusAgainstBaseRevision(baseRevFiles, collect, baseRevision, fname, f, inspector); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 133 baseRevFiles.remove(fname); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 134 } else { | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 135 checkLocalStatusAgainstFile(fname, f, inspector); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 136 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 137 } else { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 138 inspector.unknown(pp.path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 139 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 140 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 141 if (collect != null) { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 142 for (String r : baseRevFiles) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 143 inspector.removed(pp.path(r)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 144 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 145 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 146 for (String m : knownEntries) { | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 147 // missing known file from a working dir | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 148 if (getDirstate().checkRemoved(m) == null) { | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 149 // not removed from the repository = 'deleted' | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 150 inspector.missing(pp.path(m)); | 
| 74 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 151 } else { | 
| 
6f1b88693d48
Complete refactoring to org.tmatesoft
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
68diff
changeset | 152 // removed from the repo | 
| 76 
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
74diff
changeset | 153 // if we check against non-tip revision, do not report files that were added past that revision and now removed. | 
| 
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
74diff
changeset | 154 if (collect == null || baseRevFiles.contains(m)) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 155 inspector.removed(pp.path(m)); | 
| 76 
658fa6b3a371
Fixed a defect when a file added and removed past some revision was reported as R for status against that rev
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
74diff
changeset | 156 } | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 157 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 158 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 159 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 160 | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 161 public HgStatusCollector.Record status(int baseRevision) { | 
| 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 162 HgStatusCollector.Record rv = new HgStatusCollector.Record(); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 163 walk(baseRevision, rv); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 164 return rv; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 165 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 166 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 167 //******************************************** | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 168 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 169 | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 170 private void checkLocalStatusAgainstFile(String fname, File f, HgStatusInspector inspector) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 171 HgDirstate.Record r; | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 172 if ((r = getDirstate().checkNormal(fname)) != null) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 173 // either clean or modified | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 174 if (f.lastModified() / 1000 == r.time && r.size == f.length()) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 175 inspector.clean(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 176 } else { | 
| 120 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 177 // check actual content to avoid false modified files | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 178 HgDataFile df = repo.getFileNode(fname); | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 179 if (!areTheSame(f, df.content(), df.getPath())) { | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 180 inspector.modified(df.getPath()); | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 181 } | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 182 } | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 183 } else if ((r = getDirstate().checkAdded(fname)) != null) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 184 if (r.name2 == null) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 185 inspector.added(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 186 } else { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 187 inspector.copied(getPathPool().path(r.name2), getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 188 } | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 189 } else if ((r = getDirstate().checkRemoved(fname)) != null) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 190 inspector.removed(getPathPool().path(fname)); | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 191 } else if ((r = getDirstate().checkMerged(fname)) != null) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 192 inspector.modified(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 193 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 194 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 195 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 196 // XXX refactor checkLocalStatus methods in more OO way | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 197 private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, ManifestRevisionInspector collect, int baseRevision, String fname, File f, HgStatusInspector inspector) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 198 // fname is in the dirstate, either Normal, Added, Removed or Merged | 
| 89 
42bcb4bffd17
Refactored to simplify manifest collector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
76diff
changeset | 199 Nodeid nid1 = collect.nodeid(fname); | 
| 
42bcb4bffd17
Refactored to simplify manifest collector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
76diff
changeset | 200 String flags = collect.flags(fname); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 201 HgDirstate.Record r; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 202 if (nid1 == null) { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 203 // normal: added? | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 204 // added: not known at the time of baseRevision, shall report | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 205 // merged: was not known, report as added? | 
| 90 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 206 if ((r = getDirstate().checkNormal(fname)) != null) { | 
| 94 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
93diff
changeset | 207 String origin = HgStatusCollector.getOriginIfCopy(repo, fname, baseRevNames, baseRevision); | 
| 90 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 208 if (origin != null) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 209 inspector.copied(getPathPool().path(origin), getPathPool().path(fname)); | 
| 90 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 210 return; | 
| 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 211 } | 
| 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 212 } else if ((r = getDirstate().checkAdded(fname)) != null) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 213 if (r.name2 != null && baseRevNames.contains(r.name2)) { | 
| 90 
a95c700408a9
Correctly report copy/rename events for rev..working copy case
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
89diff
changeset | 214 baseRevNames.remove(r.name2); // XXX surely I shall not report rename source as Removed? | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 215 inspector.copied(getPathPool().path(r.name2), getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 216 return; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 217 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 218 // fall-through, report as added | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 219 } else if (getDirstate().checkRemoved(fname) != null) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 220 // removed: removed file was not known at the time of baseRevision, and we should not report it as removed | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 221 return; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 222 } | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 223 inspector.added(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 224 } else { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 225 // was known; check whether clean or modified | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 226 // when added - seems to be the case of a file added once again, hence need to check if content is different | 
| 59 
b771e94a4f7c
Introduce Internals to keep LocalHgRepo casts and alike in a single place. WCSC optionally to reuse SC data
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
58diff
changeset | 227 if ((r = getDirstate().checkNormal(fname)) != null || (r = getDirstate().checkMerged(fname)) != null || (r = getDirstate().checkAdded(fname)) != null) { | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 228 // either clean or modified | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 229 HgDataFile fileNode = repo.getFileNode(fname); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 230 final int lengthAtRevision = fileNode.length(nid1); | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 231 if (r.size /* XXX File.length() ?! */ != lengthAtRevision || flags != todoGenerateFlags(fname /*java.io.File*/)) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 232 inspector.modified(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 233 } else { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 234 // check actual content to see actual changes | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 235 // XXX consider adding HgDataDile.compare(File/byte[]/whatever) operation to optimize comparison | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 236 if (areTheSame(f, fileNode.content(nid1), fileNode.getPath())) { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 237 inspector.clean(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 238 } else { | 
| 93 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
91diff
changeset | 239 inspector.modified(getPathPool().path(fname)); | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 240 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 241 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 242 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 243 // only those left in idsMap after processing are reported as removed | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 244 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 245 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 246 // TODO think over if content comparison may be done more effectively by e.g. calculating nodeid for a local file and comparing it with nodeid from manifest | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 247 // we don't need to tell exact difference, hash should be enough to detect difference, and it doesn't involve reading historical file content, and it's relatively | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 248 // cheap to calc hash on a file (no need to keep it completely in memory). OTOH, if I'm right that the next approach is used for nodeids: | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 249 // changeset nodeid + hash(actual content) => entry (Nodeid) in the next Manifest | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 250 // then it's sufficient to check parents from dirstate, and if they do not match parents from file's baseRevision (non matching parents means different nodeids). | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 251 // The question is whether original Hg treats this case (same content, different parents and hence nodeids) as 'modified' or 'clean' | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 252 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 253 | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 254 private boolean areTheSame(File f, final byte[] data, Path p) { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 255 FileInputStream fis = null; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 256 try { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 257 try { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 258 fis = new FileInputStream(f); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 259 FileChannel fc = fis.getChannel(); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 260 ByteBuffer fb = ByteBuffer.allocate(min(data.length, 8192)); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 261 final boolean[] checkValue = new boolean[] { true }; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 262 ByteChannel check = new ByteChannel() { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 263 int x = 0; | 
| 120 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 264 final boolean debug = false; // XXX may want to add global variable to allow clients to turn | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 265 public int write(ByteBuffer buffer) throws Exception { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 266 for (int i = buffer.remaining(); i > 0; i--, x++) { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 267 if (data[x] != buffer.get()) { | 
| 120 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 268 if (debug) { | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 269 byte[] xx = new byte[15]; | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 270 if (buffer.position() > 5) { | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 271 buffer.position(buffer.position() - 5); | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 272 } | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 273 buffer.get(xx); | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 274 System.out.print("expected >>" + new String(data, max(0, x - 4), 20) + "<< but got >>"); | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 275 System.out.println(new String(xx) + "<<"); | 
| 
b19f0ac5ee62
Check against working copy shall expect non-persistent modifications done by filters and not report such files as modified
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
117diff
changeset | 276 } | 
| 117 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 277 checkValue[0] = false; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 278 break; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 279 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 280 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 281 buffer.position(buffer.limit()); // mark as read | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 282 return buffer.limit(); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 283 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 284 }; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 285 FilterByteChannel filters = new FilterByteChannel(check, repo.getFiltersFromWorkingDirToRepo(p)); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 286 while (fc.read(fb) != -1 && checkValue[0]) { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 287 fb.flip(); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 288 filters.write(fb); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 289 fb.compact(); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 290 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 291 return checkValue[0]; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 292 } catch (IOException ex) { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 293 if (fis != null) { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 294 fis.close(); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 295 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 296 ex.printStackTrace(); // log warn | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 297 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 298 } catch (/*TODO typed*/Exception ex) { | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 299 ex.printStackTrace(); | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 300 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 301 return false; | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 302 } | 
| 
6c0be854d149
Enable filters for status operation (ToRepo case)
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: 
102diff
changeset | 303 | 
| 58 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 304 private static String todoGenerateFlags(String fname) { | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 305 // FIXME implement | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 306 return null; | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 307 } | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 308 | 
| 
4cfc47bc14cc
Status against local working dir extracted into distinct class. Iterating over local files extracted for ease of os-dependant patching
 Artem Tikhomirov <tikhomirov.artem@gmail.com> parents: diff
changeset | 309 } | 
