0

我有一组文件,我在 SVN 存储库中复制和重命名这些文件,以便尽可能多地保留文件历史记录。除了从源复制到目标之外,我已经有了新形式的新文件,并且在另一个位置对其内容进行了一些更新。我通过从新文件顶部的另一个位置复制新文件的更新版本来对文件应用更改。所以序列看起来像:

# Copy and rename the files within svn
svn cp <old-directory><old-file-name> <new-directory>/<new-filename>

# Copy and update version of the new file in place
cp <updated-directory>/<new-filename> <new-directory>/<new-filename>

然后我可以查看文件的状态,我得到:

A  +    <new-directory>/<new-filename>

我理解的意思是这个文件将被移动(提交后)

顺便说一句,我复制而不是移动的原因是代码相当关键,因此我们希望分阶段进行移动。

在某些情况下,<old-directory>它与 the 相同,<new-directory>因此只是名称更改和一些内部更改。对这些文件执行 asvn log会给出正常的日志历史记录。但是在其他情况下,复制文件时,文件<new-directory>不存在,我不得不在 svn 中创建一个新目录,我使用的是:

svn mkdir <new-directory>

这些文件和目录也显示A +如下:

A       <new-directory>
A  +    <new-directory>/<new-filename-one>
A  +    <new-directory>/<new-filename-two>

虽然当我尝试svn log对这些文件执行操作时,我收到以下错误消息:

svn: Unable to find repository location for '<new-directory>/<new-filename>' in revision 0

我不确定我是否在这里犯了错误:我是否应该svn mkdir在将文件添加到目录之前提交?也许在我提交所有内容后它会自行解决?我还没有提交文件,因为我并不特别想深入一个我必须解开的漏洞。

4

1 回答 1

1

通常,如果您在 Subversion 中创建一个新目录,并将文件添加到该目录中,则svn status只会显示您正在添加一个新文件该目录。

$ svn mkdir foo
A       foo

$ cd foo
$ touch bar fu barfu
$ svn add *
A       bar
A       fu
A       barfu

$ cd ..
$ svn status
A       foo
A       foo\bar
A       foo\fu
A       foo\barfu

请注意,我的状态显示我正在添加目录foo和该目录下的三个文件。

当我尝试将文件复制到不存在的目录时,出现错误svn: E155007: Path '<myNewDir>' is not a directory,因此我必须先创建该目录。

所以,我想问题是你的完整svn status是什么样的?它是否包含新目录,还是仅包含您移动的文件?

另外,您的目录名称是否可能以http://or开头,foo://而这就是混淆 Subversion 的原因吗?

您的错误信息是:

svn: Unable to find repository location for '<new-directory>/<new-filename>' in revision 0

我注意到revision 0最后,它谈论的是存储库位置,看起来它试图访问的不是您的本地工作目录,而是一个 URL。

于 2013-01-23T15:04:01.253 回答