首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Filter-Repo添加文件到根提交的快速导入崩溃

使用Filter-Repo添加文件到根提交的快速导入崩溃
EN

Stack Overflow用户
提问于 2019-11-25 14:55:20
回答 2查看 246关注 0票数 0

试图将文件添加到分支根目录的尝试失败,出现以下错误:添加“快速导入崩溃报告”

代码语言:javascript
复制
git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', 'C:\MDC\MDC.7z', '$(git hash-object -w 'C:\MDC\MDC.7z')', 100644))"
Traceback (most recent call last):
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 3840, in <module>
    filter.run()
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 3777, in run
    self._parser.run(self._input, self._output)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 1396, in run
    self._parse_commit()
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 1249, in _parse_commit
    self._commit_callback(commit, aux_info)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 3334, in _tweak_commit
    self._insert_into_stream(commit)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 3752, in _insert_into_stream
    self._parser.insert(obj)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 1374, in insert
    obj.dump(self._output)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 702, in dump
    change.dump(file_)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 599, in dump
    quoted_filename = PathQuoting.enquote(self.filename)
  File "C:/Program Files/Git/mingw64/libexec/git-core\git-filter-repo", line 190, in enquote
    if unquoted_string.startswith(b'"') or b'\n' in unquoted_string:
TypeError: startswith first arg must be str or a tuple of str, not bytes
fatal: stream ends early
fast-import: dumping crash report to .git/fast_import_crash_14772

快速导入崩溃报告:https://pastebin.com/DKrz883c

Windows 10

Git版本2.24

https://github.com/newren/git-filter-repo

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-25 15:19:19

self.filename似乎是unicode,而enquote使用字节。

我对git-filter-repo的内部结构还不太了解。可能是'C:\MDC\MDC.7z',应该是字节:b'C:\MDC\MDC.7z'。或者可能是一个bug;我建议在他们的问题跟踪器上报告这一点。

在Python3中,unicode和字节字符串是不兼容的。请参见:

代码语言:javascript
复制
$ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> u'test'.startswith('"')
False

>>> u'test'.startswith(b'"')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: startswith first arg must be str or a tuple of str, not bytes

>>> b'test'.startswith('"')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: startswith first arg must be bytes or a tuple of bytes, not str

>>> b'test'.startswith(b'"')
False
票数 0
EN

Stack Overflow用户

发布于 2020-11-15 13:45:27

Git filter-repo - failed on add files to root commit

代码语言:javascript
复制
git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', b'MDC.7z', bytes('$(git hash-object -w 'C:\MDC\MDC.7z')',encoding='utf-8'), b'100644'))"

so:

  • 100644
  • FileChange的第2 param应该像run git rev-list --objects --all的path
  • 那样,FileChange的每一个param都必须输入字节,b'100644'
  • $(git hash-object -w 'C:\MDC\MDC.7z') -> -> bytes('$(git hash-object -w 'C:\MDC\MDC.7z')',encoding='utf-8')

示例:

代码语言:javascript
复制
$ git filter-repo --force --commit-callback "if not commit.parents: commit.file_changes.append(FileChange(b'M', b'1.txt', bytes('$(git hash-object -w 'D:\tmp\git\git1\1.txt')',encoding='utf-8'), b'100644'))"
Parsed 3 commitsHEAD is now at 067c5a4 add 5.txt
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 4 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (10/10), done.
Total 10 (delta 2), reused 3 (delta 0)

New history written in 0.68 seconds; now repacking/cleaning...
Repacking your repo and cleaning out old unneeded objects
Completely finished after 2.18 seconds.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59034527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档