gpt4 book ai didi

git-svn 无法提交回 svn repo 尽管有干净的 rebase

转载 作者:太空狗 更新时间:2023-10-29 14:00:29 26 4
gpt4 key购买 nike

多年来我一直在使用 git-svn,感觉没有任何问题。我的典型工作流程是 work, commit, ..., work, commit, rebase, dcommit

今天我突然开始收到这个错误:

$ git svn rebase
Current branch master is up to date.

$ git svn dcommit
Assertion failed: (svn_uri_is_canonical(child_uri, NULL)), function uri_skip_ancestor, file /SourceCache/subversion/subversion-62/subversion/subversion/libsvn_subr/dirent_uri.c, line 1519.
error: git-svn died of signal 6

以防与版本相关:

$ git --version
git version 1.8.3.4 (Apple Git-47)

我确实对 git stash 进行了一次更改,但这以前从来都不是问题。会不会是现在?

最近发生的另一件事是我们的 Unfuddle 存储库(托管中央 SVN 存储库的地方)最近空间不足,我们不得不为更大的计划付费;但在增加计划规模后,我能够在周五下午做出 promise 。我想不出还有什么变化。

我确实在 SO 上发现其他一些人对 dcommit 有问题,但没有人有这个特定的错误消息。

我该怎么办?

最佳答案

这与文件名中带有符号 (@) 的文件有关(如 icon@2x.png)。

我认为这是一个全局 git-svn 错误,并试图在另一个 svn 存储库(也由 Unfuddle 托管,与第一个相同)上重现它,但似乎没有任何问题。

这是我为重现我的 git-svn 错误报告的问题所做的尝试:

(给定您使用 git-svn 克隆的现有 SVN 存储库)

$ touch icon@2x.png
$ git add icon@2x.png
$ git commit -m"testing"
$ git svn rebase
$ git svn dcommit

没有按我的预期重现问题,所以我没有提交错误报告。我能想到的两个 repo 协议(protocol)之间的唯一区别是,我试图重现问题的那个是使用 trunk/ branches/ 的标准 svn 布局>tags/ 并因此被 git svn clone -s 克隆,而我遇到问题的原始 repo 没有使用这个结构。我目前没有不使用标准结构进行测试的备用 repo 协议(protocol),所以现在我暂时放弃。


但是,我是这样解决这个问题的:

使用纯 SVN 客户端,检查存储库并在那里提交有问题的文件/更改。为了提交文件名中带有@的文件,您必须在文件名后附加另一个@:

$ svn ci -m"stupid at-sign" path/to/icon@2x.png@ path/to/icon-small@2x.png@ ...

一旦完成,回到你的 git-svn 克隆并再次 rebase ,再次尝试 dcommit,它应该工作(为我工作!)...

关于git-svn 无法提交回 svn repo 尽管有干净的 rebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com