今天在工作中我需要使用git-svn克隆某个项目,因为某些约束,我以前执行的命令是git svn clone -T --no-minimize-url URL_OF_THE_REPO
。长话短说......这已经非常轻松了,并且由于git中的一些错误也可靠地失败...这自然让我通过重新启动命令继续克隆,我不能只是离开它并知道它我回来时会完成克隆工作。因此,将其作为夜间工作是不可能的。
答案 0 :(得分:1)
1我认为这是因为svn不是按照git的工作方式设计的(使用被压缩并在单个块中发送的对象)。 git-svn必须通过修订进行修订,以将svn branches / tags的内容复制到git等价物中。
2和3是相关的:你可以尝试要求获取过程从你已经检索过的修订开始,这样git-svn就不必每次都从头开始。你可以做def bfs_expand(node, queuey, test_states):
# Node Queue List -> Queue List
# If legal move and not already in test states create and put children nodes
# into the queue and their state into test_states. Return queue and test states
# Copy original path, depth, and state to separate variables
original_path = node.path_to_node
original_depth = node.search_depth
original_state = node.current_state
# Check if up is legal, if so add new node to queue and state to test state
if node.is_legal_move('Up'):
up_state = original_state
a = up_state.index(0)
b = a - 3
up_state[a], up_state[b] = up_state[b], up_state[a]
if up_state not in test_states:
test_states.append(up_state)
up_node = Node(original_path + ['Up'], original_depth + 1, up_state)
queuey.put(up_node)
print(test_states)
print(original_state)
之类的事情。
答案 1 :(得分:1)
为什么以上帝的名义这么慢,
因为在Git中你总是克隆一个完整的存储库,而不仅仅是一个提交。这意味着,要进行完整的git-svn
克隆,git-svn
必须单独下载每个SVN修订版并将其转换为Git提交。这只需要时间。这是我不鼓励每个人使用git-svn
进行一次性迁移的原因之一,但只推荐git-svn
作为SVN的前端,您需要从Git克隆返回SVN服务器,是git-svn
创建的。
如何加快(结账)流程,
结帐过程很快。我想你的意思是克隆/获取过程。那么使用git-svn
时你只能做两件事。
如果可能,请在SVN服务器计算机上执行cloning / fetchin,这样可以节省协议开销和网络延迟。但请确保使用正确的参数组合,以便最终在提交消息元数据中使用远程SVN URL,否则您将在以后从工作站更新/提交时遇到问题。
做一个"浅"克隆。您可以告诉git-svn
要获取哪些修订版。因此,如果您对git-svn
克隆中的完整历史记录不感兴趣,请告诉clone命令从哪个修订版开始。如果你e。 G。只获取最后5次提交,你需要几秒钟才能完成。
我如何规划夜间工作以进行这些沉重的检查,并确信他们会在早上完成(我重申,如果失败,我必须密切注意结账)
一旦克隆命令开始实际获取SVN修订版,您应该能够使用git svn fetch
恢复该过程。所以只需循环git svn fetch
直到克隆完成,如果它完成。我写 if ,因为它可能会遇到git-svn
中的错误或某些不兼容的错误,例如可能使该进程在同一修订版中可靠地失败的命名分支或标记。在这种情况下,你必须手动处理它,因为恢复将无法正常工作。
答案 2 :(得分:0)
你可以初始化(不完全克隆)repo为空。
编辑repo .git / config以过滤分支和标记以获取。
然后获取。