svn: E000002: 提交失败

svn: E000002: Commit failed

我正在尝试将我的 Wordpresss 插件发布到他们分配给我的 svn 存储库。我使用 git(不是 svn)所以我尝试使用 git-svn 但是当我尝试使用 [= 推送本地 git 回购时出现以下错误22=]:

$ git svn dcommit
Committing to http://plugins.svn.wordpress.org/wp-github-pipeline/trunk ...
    A   .bowerrc
    A   composer.json
    A   composer.lock
   ...
    A   vendor/guzzle/guzzle
b3f5050cb6270c7a728a0b74ac2de50a262b3e02 doesn't exist in the repository at /usr/local/git/lib/perl5/site_perl/Git/SVN/Editor.pm line 401.
Failed to read object b3f5050cb6270c7a728a0b74ac2de50a262b3e02 at /usr/local/git/libexec/git-core/git-svn line 1011.

我进行了大量搜索(请参阅下面的 "Other Resources"),我了解到这个问题通常是由于子模块与 git svn 一起使用造成的。我曾经有一个子模块,但我提交了文件并使用 git filter-branch described here 删除了 .gitmodules 但问题仍然存在。所以我搜索了更多,似乎使用 composer and/or bower 也会导致同样的问题。

我还没有尝试从我的 .git 中删除 vendor/ 忽略并提交所有第 3 方库...我有一种可能有效的预感,但即使如果这样做,那不是一个可持续的长期解决方案。

有没有办法告诉 git-svn 忽略我的。git忽略并上传所有 vendor/ files?。还是有另一种方法可以避免将我所有的依赖项都提交到回购协议中?或者这是一个与我想象的不同的问题?提前致谢!

更新 1 我从我的 .gitignore 中删除了 vendor/** 并在我的本地存储库中提交了依赖项(但没有推送到源)。但我得到了完全相同的错误!

更新 2 我将所有文件复制到一个新目录中并尝试进行基本的 svn 提交。没有子模块。包括所有供应商/文件。我得到另一个错误:

$ svn ci -m 'Adding version 1.0 files'
Sending        trunk/.gitignore
Adding         trunk/README.md
...
Adding         trunk/vendor/wp-cli/wp-cli/utils/wp-completion.bash
Adding         trunk/wp-cli.yml
Adding         trunk/wp-github-pipeline.php
Transmitting file data .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................svn: E000002: Commit failed (details follow):
svn: E000002: Can't open file '/home/svn/repos/wp-plugins/db/transactions/1232700-rw56.txn/props': No such file or directory

我试过 svn cleanup,同样的事情发生了。

更新 3 我尝试从头开始,但发生了同样的错误。以下是命令的确切顺序:

$ mkdir pipeline_svn2
$ svn co http://plugins.svn.wordpress.org/wp-github-pipeline pipeline_svn2
$ cd pipeline_svn2

[ copied all files into pipeline_svn2/ ]

$ svn add trunk/*
$ svn ci -m 'Adding v1.0 files'

[ lots of these... ]
Adding         trunk/wp-github-pipeline.php
Transmitting file data ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................svn: E000002: Commit failed (details follow):
svn: E000002: Can't open file '/home/svn/repos/wp-plugins/db/transactions/1233755-rx30.txn/props': No such file or directory

这让我觉得服务器出了问题。

其他资源

终于弄明白了...

在与 Wordpress 插件团队交谈后,他们建议我尝试使用 https: 协议(而不是 http:):

Instead of using http://plugins.svn.wordpress.org/wp-github-pipeline as your plugin SVN URL, try using https://plugins.svn.wordpress.org/wp-github-pipeline instead.

Sometimes, proxies and various routers and other types of traffic modifiers interfere with SVN traffic, for some people. Using https allows for end-to-end encryption, preventing most of these from altering the traffic and causing these sorts of problems.

我用 svn relocate 进行了更改,但它仍然不起作用,但它给出了更详细的错误消息。所以我做了更多的研究,发现 this post 这表明我的新错误可能与 permissions/authentication.

有关

所以凭直觉,我在删除 ~/.subversion/auth/svn.simple 中的文件后重新验证并做了一个全新的 svn co 并从头开始,使用 https: 然后它 终于成功了!

我不确定问题是与 http-->https 重定向有关还是身份验证问题(我有两个 Wordpress.org 帐户)。

我今天遇到了同样的问题。在一次提交中,我不小心用子模块替换了符号链接。有两个问题:

  1. 在 svn 的一次提交中改变某些东西的类型是不可能的,例如文件 -> 目录,目录 -> 文件,文件 -> 符号链接等
  2. 显然,git 子模块是 git 的一个特性,不能被 git svn
  3. 处理

我没有投入更多的时间来找出这两个问题中哪一个真正停止了git svn