Fixed symlink absolute path/canonical path mixup with JGit (issue-78)
| | |
| | |
|
| | | #### fixes
|
| | |
|
| | | - Fixed absolute path/canonical path discrepancy between Gitblit and JGit regarding use of symlinks (issue 78)
|
| | |
|
| | | **0.9.1** *released 2012-03-27*
|
| | |
|
| | | #### fixes
|
| | |
|
| | | - Lucene folder was stored in working copy instead of in .git folder
|
| | |
|
| | | **0.9.0** *released 2012-03-27*
|
| | |
| | |
|
| | | import com.gitblit.models.RepositoryModel;
|
| | | import com.gitblit.models.UserModel;
|
| | | import com.gitblit.utils.FileUtils;
|
| | | import com.gitblit.utils.HttpUtils;
|
| | | import com.gitblit.utils.StringUtils;
|
| | |
|
| | |
| | | */
|
| | | protected RepositoryModel getRepositoryModel(ReceivePack rp) {
|
| | | Repository repository = rp.getRepository();
|
| | | String rootPath = GitBlit.getRepositoriesFolder().getAbsolutePath();
|
| | | String repositoryName = StringUtils.getRelativePath(rootPath, repository.getDirectory()
|
| | | .getAbsolutePath());
|
| | | String repositoryName = FileUtils.getRelativePath(GitBlit.getRepositoriesFolder(), repository.getDirectory());
|
| | | RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
|
| | | return model;
|
| | | }
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | | /**
|
| | | * Determine the relative path between two files. Takes into account
|
| | | * canonical paths, if possible.
|
| | | * |
| | | * @param basePath
|
| | | * @param path
|
| | | * @return a relative path from basePath to path
|
| | | */
|
| | | public static String getRelativePath(File basePath, File path) {
|
| | | File exactBase = getExactFile(basePath);
|
| | | File exactPath = getExactFile(path);
|
| | | return StringUtils.getRelativePath(exactBase.getPath(), exactPath.getPath());
|
| | | }
|
| | | |
| | | /**
|
| | | * Returns the exact path for a file. This path will be the canonical path
|
| | | * unless an exception is thrown in which case it will be the absolute path.
|
| | | * |
| | | * @param path
|
| | | * @return the exact file
|
| | | */
|
| | | public static File getExactFile(File path) {
|
| | | try {
|
| | | return path.getCanonicalFile();
|
| | | } catch (IOException e) {
|
| | | return path.getAbsoluteFile();
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | */
|
| | | private static List<String> getRepositoryList(String basePath, File searchFolder,
|
| | | boolean onlyBare, boolean searchSubfolders) {
|
| | | File baseFile = new File(basePath);
|
| | | List<String> list = new ArrayList<String>();
|
| | | for (File file : searchFolder.listFiles()) {
|
| | | if (file.isDirectory()) {
|
| | |
| | | continue;
|
| | | }
|
| | | // determine repository name relative to base path
|
| | | String repository = StringUtils.getRelativePath(basePath,
|
| | | file.getAbsolutePath());
|
| | | String repository = FileUtils.getRelativePath(baseFile, file);
|
| | | list.add(repository);
|
| | | } else if (searchSubfolders && file.canRead()) {
|
| | | // look for repositories in subfolders
|
| | |
| | | import com.gitblit.models.IssueModel.Priority;
|
| | | import com.gitblit.models.IssueModel.Status;
|
| | | import com.gitblit.models.SearchResult;
|
| | | import com.gitblit.utils.FileUtils;
|
| | | import com.gitblit.utils.IssueUtils;
|
| | | import com.gitblit.utils.IssueUtils.IssueFilter;
|
| | | import com.gitblit.utils.StringUtils;
|
| | |
|
| | | /**
|
| | | * Tests the mechanics of distributed issue management on the gb-issues branch.
|
| | |
| | | @Test
|
| | | public void testLifecycle() throws Exception {
|
| | | Repository repository = GitBlitSuite.getIssuesTestRepository();
|
| | | String name = StringUtils.getRelativePath(GitBlitSuite.REPOSITORIES.getAbsolutePath(),
|
| | | repository.getDirectory().getAbsolutePath());
|
| | | String name = FileUtils.getRelativePath(GitBlitSuite.REPOSITORIES, repository.getDirectory());
|
| | |
|
| | | // create and insert an issue
|
| | | Change c1 = newChange("testCreation() " + Long.toHexString(System.currentTimeMillis()));
|
| | |
| | | import org.eclipse.jgit.lib.Repository;
|
| | | import org.junit.Test;
|
| | |
|
| | | import com.gitblit.GitBlit;
|
| | | import com.gitblit.LuceneExecutor;
|
| | | import com.gitblit.models.RefModel;
|
| | | import com.gitblit.models.RepositoryModel;
|
| | | import com.gitblit.models.SearchResult;
|
| | | import com.gitblit.utils.FileUtils;
|
| | | import com.gitblit.utils.JGitUtils;
|
| | | import com.gitblit.utils.StringUtils;
|
| | |
|
| | |
| | |
|
| | | private RepositoryModel newRepositoryModel(Repository repository) {
|
| | | RepositoryModel model = new RepositoryModel();
|
| | | model.name = StringUtils.getRelativePath(GitBlitSuite.REPOSITORIES.getAbsolutePath(),
|
| | | repository.getDirectory().getAbsolutePath());
|
| | | model.name = FileUtils.getRelativePath(GitBlitSuite.REPOSITORIES, repository.getDirectory());
|
| | | model.hasCommits = JGitUtils.hasCommits(repository);
|
| | |
|
| | | // index all local branches
|