- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 GCC git 镜像,已记录 here .
前段时间,我克隆了 git 仓库:
git clone git://gcc.gnu.org/git/gcc.git
添加了 git-svn 内容:
git svn init -Ttrunk --prefix=origin/ svn+ssh://gcc.gnu.org/svn/gcc
然后 git svn rebase
和 git svn dcommit
等都运行良好。
几个月后,我在本地 git 分支上完成了各种开发工作,并且开始向上游 SVN 提交更多更改:
从 git 镜像更新:
$ git rebase
确保我拥有来自 SVN 的绝对最新版本,但它不起作用:
$ git svn rebase -v
Unable to determine upstream SVN information from working tree history
我以某种方式破坏了元数据!除了上述内容,我认为我在某些时候错误地执行了 git svn fetch
,但这应该不会有害,不是吗?
因此,我尝试从远程 git 镜像创建一个新分支:
$ git branch svntrunk remotes/origin/trunk
$ git checkout svntrunk
$ git svn rebase
Unable to determine upstream SVN information from working tree history
网络搜索表明分支历史在某种程度上与 SVN 不同,但我检查了 git log
并且每个提交都有相应的 git-svn-id
,这似乎反驳了这一点,不是吗?
因此,我尝试从 git://gcc.gnu.org/git/gcc.git 克隆一个新版本,并且在该存储库中 git svn rebase
工作正常。这两个 repos,其中都有来自同一来源的 git rebase
,怎么会有不同的历史?大概他们不能,区别在于本地元数据?
现在,我不想破坏我一直在使用的存储库(尽管我可以),并且将补丁导出到另一个存储库以提交首先破坏了 git-svn 的意义。那么,我该如何修复呢?
最佳答案
你应该可以用移植物来做到这一点。我的理解是,嫁接旨在用于引入遗留存储库。它允许您手动告诉 git 某些引用有一个共同的父级。
如评论中所述,可能有更简单的解决方案。如果所有其他方法都失败了,这将起作用。
您将下 pull 当前的 git 存储库(使用 git 或 git-svn)并将您的旧 git-svn 存储库添加为远程。它们没有关系,所以 gitk 看起来像这样:
我在工作中遇到过一个事件,我们进行了一些文件系统复制而不是 svn 复制,所以我的一些分支名称暗示了这一点。希望这一切都有意义。很幸运,我恰好拥有所有这些图像和故事。有什么机会!?可能还不错,git-svn 很容易混淆。
copied_from 分支是他们复制的地方。 graft_ref 是它相遇的地方。他们添加了一堆文件,更改了属性,然后更改了一些文件。有点乱。
总体思路是获取原始来源的索引,但文件内容要匹配修改。所以我们从 ref 分支开始,然后 reset mixed 得到索引。
$ git checkout graft_ref
$ git checkout -b graft_parent
$ git reset --mixed copied_from
如果你在断线时没有在两个分支之间进行更改,那么你应该不必担心这一步。
$ git commit -a -m "svn_branch changes made on svn_trunk filesystem copy"
现在我们需要进行实际的移植。为了便于阅读,我在这里修剪了哈希值。
$ git log -1 --pretty=format:%H graft_ref
631d3c84e35de98236c3d36c08d14ec92f9c62ae
$ git log -1 --pretty=format:%H graft_parent
96a4e87b554e0030035d35ca3aac23e9d71962af
$ echo "631d3... 96a4e8..." > .git/info/grafts
这看起来与您期望的一样。现在我们只需要将树上的更改 rebase 。我的笔记丢失了,但我想这是我会做的,呵呵。
$ git checkout svn_branch/master
$ git checkout -b consolidate_changes
$ git rebase master
您应该能够将这些更改推送到任何地方。虽然 git 不跟踪移植,因此移植的分支(svn_branch/master 和 friend )将再次中断。除非您再次进行嫁接,否则它实际上是一棵枯树。对于 git-svn,这不是什么大问题,因为您只需提交更改,然后将源作为干净的副本再次 pull 下。
关于git - "Unable to determine upstream SVN information from working tree history",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805980/
根据这个article , git push --set-upstream 已弃用,应改用 git push --set-upstream-to。 但是当我检查 git push文档,我只能找到--s
无意中,创建了一个分支remotes/upstream/upstream/develop。上游受 GitHub 控制。标准删除命令失败: $ git fetch --all $ git branch
我的网站在端口 80 (http) 上运行,我使用 nginx 没有任何问题。下面是我在 nginx 中使用的默认文件 server { listen 80; server_name
这个问题在这里已经有了答案: Undo a Git merge that hasn't been pushed yet (35 个答案) 关闭 9 年前。 这个问题与其他问题的不同之处在于,我想在恢
我们在 NGINX 后面有带有 Jersey 服务 API 的 tomcat。我们开发的一个新的流式 API 在我们直接调用 Tomcat 时运行良好,但在通过 NGINX 调用它时开始没有响应。 查
在我的 Remote 列表中,我看到:(git branch -r) upstream/HEAD -> upstream/master 当然,我有一个 upstream/master,origin 是
git rebase upstream/master 和 git pull --rebase upstream master 之间有区别吗?如果有,那是什么?远程可以是任何远程,不一定是上游。 最佳答
我正在尝试按照一些步骤为 GitHub 上的存储库做贡献,但其中一个步骤不起作用。步骤在这里:https://github.com/wdbm/qTox/blob/master/CONTRIBUTING
我使用本教程部署了一个 Django 网站 https://jee-appy.blogspot.com/2017/01/deply-django-with-nginx.html 该网站可从互联网 ww
TL; 博士 Nginx 日志时出现什么http/tcp 现象upstream prematurely closed connection while reading response header
我有一个 Django 应用程序,用户可以使用该应用程序使用多个视频创建视频拼贴画。问题是,在生产中,当将视频上传到 amazon s3 时,我得到一个 502 错误的网关(在本地工作正常)。有谁知道
我的 rails nginx/unicorn 服务器出现上游超时错误。我已尝试解决此问题,但没有找到适合我的解决方案。 我正在粘贴我在 nginx error.log 文件中得到的确切错误: ups
我目前总是在我的用户正在执行的查询中得到 502...这通常返回 872 行并且需要 2.07 才能在 MySQL 中运行。然而,它返回了很多信息。 (每一行都包含很多东西)。有什么想法吗? 运行 D
我在错误日志中收到如下 nginx 错误: [error] 4257#0: *3470 upstream timed out (110: Connection timed out) while rea
我试图将更改从上游 pull 到我的分支中。我试过 git fetch https://github.com/someuser/someproject,但它顽固地拒绝做任何事情。它只是说了一些完全隐晦
/编辑我做了the answer to the question mentioned above的建议授予对注册表的访问权限,如下所示: sudo mkdir -p /usr/local/etc/mo
配置例子 ? 1
我用 upstream和 proxy用于负载平衡。 指令 proxy_pass http://upstream_name使用默认端口,即 80。 但是,如果上游服务器不监听此端口,则请求将失败。 如何
我使用 nginx 作为代理服务器将请求转发到我的 gunicorn 服务器。当我运行 sudo nginx -t -c/etc/nginx/sites-enabled/mysite 时,出现以下错误
我的 git 似乎一团糟。 我首先重命名了一个名为分支 Sprint/13/Story/XXX-11 的分支 使用这个: git branch -m Sprint13/Story/XXX-11 这并没
我是一名优秀的程序员,十分优秀!