comparison src/org/tmatesoft/hg/internal/SubrepoManager.java @ 571:e4ee4bf4c7d0

Let session context control creation of Path instances
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 11 Apr 2013 16:27:06 +0200
parents 6865eb742883
children
comparison
equal deleted inserted replaced
570:36853bb80a35 571:e4ee4bf4c7d0
1 /* 1 /*
2 * Copyright (c) 2011-2012 TMate Software Ltd 2 * Copyright (c) 2011-2013 TMate Software Ltd
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by 5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License. 6 * the Free Software Foundation; version 2 of the License.
7 * 7 *
79 private List<HgSubrepoLocation> readConfig(BufferedReader br, Map<String, String> substate) throws IOException { 79 private List<HgSubrepoLocation> readConfig(BufferedReader br, Map<String, String> substate) throws IOException {
80 try { 80 try {
81 String line; 81 String line;
82 LinkedList<HgSubrepoLocation> res = new LinkedList<HgSubrepoLocation>(); 82 LinkedList<HgSubrepoLocation> res = new LinkedList<HgSubrepoLocation>();
83 HgInternals hgRepoInternal = new HgInternals(repo); 83 HgInternals hgRepoInternal = new HgInternals(repo);
84 final Path.Source pathFactory = repo.getSessionContext().getPathFactory();
84 while ((line = br.readLine()) != null) { 85 while ((line = br.readLine()) != null) {
85 int sep = line.indexOf('='); 86 int sep = line.indexOf('=');
86 if (sep == -1) { 87 if (sep == -1) {
87 continue; 88 continue;
88 } 89 }
107 } 108 }
108 // TODO respect paths mappings in config file 109 // TODO respect paths mappings in config file
109 // 110 //
110 // apparently, key value can't end with '/', `hg commit` fails if it does: 111 // apparently, key value can't end with '/', `hg commit` fails if it does:
111 // abort: path ends in directory separator: fourth/ 112 // abort: path ends in directory separator: fourth/
112 Path p = Path.create(key.charAt(key.length()-1) == '/' ? key : key + '/'); 113 Path p = pathFactory.path(key.charAt(key.length()-1) == '/' ? key : key + '/');
113 String revValue = substate.get(key); 114 String revValue = substate.get(key);
114 HgSubrepoLocation loc = hgRepoInternal.newSubrepo(p, value, kind, revValue == null ? null : Nodeid.fromAscii(revValue)); 115 HgSubrepoLocation loc = hgRepoInternal.newSubrepo(p, value, kind, revValue == null ? null : Nodeid.fromAscii(revValue));
115 res.add(loc); 116 res.add(loc);
116 } 117 }
117 return Arrays.asList(res.toArray(new HgSubrepoLocation[res.size()])); 118 return Arrays.asList(res.toArray(new HgSubrepoLocation[res.size()]));