SVN与Git工作流的建议

3

我在使用Git时遇到了问题。请注意,我对Git非常陌生。

问题:我需要将我的工作同步到家里/移动设备。我的工作场所使用SVN,不能从外部访问(我无法更改这个设置)。我也被禁止从外部进行ssh连接(我也无法更改这个设置)。回到家里,我需要提交我的更改。

解决方案:

SVN Server -> Git (in my Office PC) -> Github -> Git (in my House PC)
SVN Server <- Git (in my Office PC) <- Github <- Git (in my House PC)

我选择Github的原因是因为它支持HTTPS,这将解决我在办公室外部连接SSH的问题。
所以我的问题是:
1.这是正确的方法吗? 2.如果可以,请给我一个大致的例子,我该如何做到这一点?
我知道第二个问题很大,但我无法将我在家里的更改合并回SVN服务器。提前感谢您的帮助。
更新:
我实际上考虑使用USB驱动器作为传输Git存储库的介质。然而,我希望有一种方式,这样我就不必使用USB驱动器了(所有内容都在互联网上自动排序,担心我会把我的USB掉在某个地方)。我甚至使用Dropbox一段时间,但是然后,存储库开始变得太大,而Dropbox无法处理大量小文件(超过20,000)。
经过一番考虑(流程的复杂性,数据的敏感性),我想我会使用USB驱动器来传输我的Git存储库。但是,我会保持问题开放,以便我可以从这个问题中学习一些Git命令。
顺便说一下,这是我目前的工作流程:
1.SVN服务器-> Git(办公室电脑)-> Github-> Git(家用电脑) 没有问题 2.在家里:创建一个登录分支并将其推回Github。 3.在办公室:第一次,我从我的Github存储库中克隆回来并合并了登录分支。 4.然后,git svn init svn://url -s 5.???
我尝试了一些命令,但我不认为它正在工作,希望有人可以帮助我从第5步开始。

这似乎是一个合理的方法(虽然您也可以克隆或捆绑到拇指驱动器),并且您不应该在各种git存储库之间推送和拉取时遇到任何问题。你只是在处理git-svn部分时遇到了麻烦,对吧?如果您能明确说明您在这方面遇到的问题,我们可能更容易地帮助您解决问题。 - Cascabel
3
你会支付 GitHub 访问权限的费用,还是使用他们的免费账户?如果你想要在本地跟踪更改而不需要连接 SVN 服务器,则 git-svn 或 hg-svn 都可以很好地工作。然而,在这种设置中,你也将公司数据放置在不属于公司的机器上,因此你可能需要询问是否可以这样做(很可能不可以)。此外,GitHub 的免费账户是公开的(它们适用于开源项目),因此如果你想要继续这样做,请记住这一点。 - wkl
正如其他人所说,将专有代码发布在公共场所可能是一个糟糕的计划。我的第一条评论并不是为了支持共享私人数据;我只是假设既然问题已经被提出,那么这个问题已经被考虑过了。 - Cascabel
@Jefromi,@birryee:我为Github账户付费,所以这是一个私有仓库。我认为这没问题,因为它是私有的。 - Amree
2个回答

2
假设工作不允许您将代码库推送到GitHub,即使是在私人存储库中,您可以将远程存储库添加到已安装的USB驱动器上,并来回携带。

我必须接受这个解决方案,用自己的解决方案需要太多工作量了。 - Amree

1
一些事情需要考虑:
  1. 在 Github 上存储公司数据很可能违反公司安全政策。
  2. git-svn 存储库不适合在计算机之间共享。
也许一个好的选择是将存储库 git svn clone 到闪存驱动器上。然后带回家,在家里工作并建立提交。当你到达工作时,你可以像正常的 git-svn 工作流程一样从存储库中执行 git svn rebase && git svn dcommit编辑:您是否考虑在备用端口上运行 sshd 或通过 HTTP(S) 代理 SSH?我过去使用过其中一种技术或另一种技术,具体取决于所采取的限制。这可能不是正统的,但我相信它比在 Github 上存储公司源代码要好得多。

分享git-svn仓库有什么问题吗?我并没有真正使用过它们,但最坏的情况下,你总是可以将需要的内容放回原始的git-svn仓库中的适当分支,然后进行git svn rebase和dcommit,对吧? - Cascabel
可以,但如果开发分歧,则结果可能会难以适当地应用。这种情况并不像我见过的其他情况那么糟糕,但是在不同人使用计算机进行开发时,使用一个克隆的git-svn可能会变得有问题。我看到的传统智慧是git-svn克隆不应该被推送或拉取。 - cdhowie
嗯,我想这很有道理 - 但如果只有你一个人,我不明白为什么重新基于主分支重建所有内容并结束一天会很难。 (尽管这样做会让我感到不舒服,因为要放弃漂亮的历史记录。) - Cascabel
“将代码库使用 git svn clone 命令克隆到闪存驱动器上。” 如果 SSH 被阻止,那么闪存驱动器也可能被阻止。我知道在我的公司里肯定是这样的。 - VonC
我经常毫无问题地推送git-svn存储库。这些远程大多是只读的,但偶尔会pull。在git主干中注意保持干净、线性的历史记录,可以防止在svn中出现问题。 - bstpierre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接