【问题标题】:What svn command is used by "git svn fetch <svn-remote>"?“git svn fetch <svn-remote>”使用什么svn命令?
【发布时间】:2020-11-10 04:24:41
【问题描述】:

我有一个 svn 存储库,我在现有的 Git 存储库中创建了它的 svn-remote。我使用“git svn fetch”命令从 svn 存储库中获取数据。

在 svn 中,我们通过检查所需的路径/文件夹/项目来创建工作副本。

  1. 只能使用颠覆工具访问 svn 存储库?
  2. 如果是这样,那么 git svn 如何下载/获取 svn 数据,它使用哪个 svn 命令?我在“C:\Program Files\Git\usr\bin”下看到一些subversion相关的dll文件,msys-svn_client-1-0.dll一定是Git使用的svn代理。
  3. git svn 是否维护任何工作副本或者它使用一些不同的机制来获取数据,如果是,那么它是什么?

【问题讨论】:

标签: git svn version-control git-svn


【解决方案1】:

它是否使用任何svn 命令?

它(perl/Git/SVN.pm# 脚本)通过来自 Git Perl modulesPerl module 使用 SVN 命令

特别是,Git::SVN::Ra 处理 git-svn 的 Subversion 远程访问功能,并使用 SVN::Client 模块执行实际的 subversion 命令。


但请确保使用 Git 2.28(2020 年第三季度),以确保为 SHA-256 transition 准备好任何 CVS/SVN 接口

commit 6e9c4d4commit f3eaa09commit 05ea93dcommit 66eadd1commit 94b2ee1commit ff508e2commit 9ab3315commit 148f193(2020 年 6 月 22 日)和commit 3e04b6e、@987 commit 407527bcommit 606b974commit 5aa6877commit 62814df(2020 年 6 月 19 日)brian m. carlson (bk2204)
(由 Junio C Hamano -- gitster -- 合并于 commit e7e113a,2020 年 7 月 6 日)

perl:使SVN代码哈希独立

签字人:brian m. carlson
委托人:Eric Wong

git svn 中有几个地方使用了各种硬编码常量。

要匹配对象 ID,请使用 $oid 变量。

根据对象 ID 计算我们用于修订存储的记录大小。

在解析修订映射格式时,请在包格式中使用通配符,因为我们知道我们正在解析的数据始终是记录大小。

这让我们可以继续为包格式使用常量。

最后,更新几个 cmets 以反映对象 ID 可能是多种大小之一的事实。


Git 2.29(2020 年第四季度)添加了可移植性修复。

参见brian m. carlson (bk2204)commit 6103d58(2020 年 8 月 6 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 092b677,2020 年 8 月 13 日)

git-cvsexportcommit: 5.10.1之前支持Perl

签字人:brian m.卡尔森

6e9c4d408d("git-cvsexportcommit: port to SHA-256", 2020-06-22, Git v2.28.0-rc0 -- mergelisted in batch #7) 中的更改添加了使用索引的临时目录。

但是,我们使用的表单在 5.10.1 之前的 Perl 版本中不起作用。

例如,版本 5.10.0 包含 2007 年的 File::Temp 版本,但不包含“newdir”。

为了使代码与我们支持的 5.8.8 一起工作,让我们更改为使用带有参数“CLEANUP”的静态方法“tempdir”,它提供了相同的行为。


在 Git 2.30(2021 年第一季度)之前,最近一次 oid-&gt;hash 转换错过了一个位置,打破了“git-svn”。

参见brian m. carlson (bk2204)commit 03bb366(2020 年 10 月 22 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 305fcf4,2020 年 11 月 2 日)

svn:为短 OID 使用正确的变量名

报告人:Nikos Chantziaras
签名人:brian m.卡尔森

commit 9ab33150a0("perl: create and switch variables for hash constants", 2020-06-22, Git v2.28.0-rc0 -- mergebatch #7 中列出) 转换了在 Subversion 代码中将变量 $sha1_short 转换为 $oid_short,因为 git-svn 现在可以理解 SHA-256。

但是,错过了一次转化。

因此,Perl 抱怨使用这个变量:

Use of uninitialized value $sha1_short in regexp compilation at
/usr/lib64/perl5/vendor_perl/5.30.3/Git/SVN/Log.pm line 301, <$fh>
line 6.  

因为我们在这里解析原始差异输出,所以我们实际上会错误解析数据的可能性非常低,因为我们将以冒号开头的唯一行是我们所期望的。
即使我们在路径中有换行符,我们最终也会得到一个带引号的路径。
我们的正则表达式没有我们希望的那么严格。

然而,我们的代码发出 Perl 警告显然是不可取的,所以让我们将其转换为使用正确的变量名。

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2014-11-13
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多