代码之家  ›  专栏  ›  技术社区  ›  Alasdair

提交到SVN存储库的本地副本

  •  4
  • Alasdair  · 技术社区  · 16 年前

    我已经签出了一个在谷歌代码上托管的项目的副本。我将要对它进行更改,我希望在本地计算机上的一个存储库中对它们进行版本控制。

    如果可能的话,我想使用SVN,因为我已经知道了创建存储库、签出和提交的基本知识。

    我可以用SVN来做这个吗,还是应该看看分布式版本控制?我使用的是Linux,而不是Windows。

    6 回复  |  直到 16 年前
        1
  •  6
  •   John Weldon user3678248    16 年前

    我非常高兴将SVN用于远程存储库+将Mercurial或Git用作SVN repo之上的本地存储库。

    它们都是分布式源代码管理工具,我喜欢它们的原因略有不同。

    我发现使用我自己的本地回购非常强大,这与一个远程颠覆存储库相吻合…

    更新

    虽然我非常喜欢从谷歌代码导出和导入到本地回购的答案,但我真正喜欢的是SVN和Git/Mercurial的组合是,您可以定期进行SVN更新,从谷歌获取最新的代码,然后提交Git提交或Hg提交,将最新的代码添加到本地回购。

    比定期将SVN导出到您的repo中以获取更新要简单得多。

    此外,使用git/mercurial,您可以使用强大的分支/补丁工具,SVN并不能使之变得如此简单。

        2
  •  3
  •   Tom Leys    16 年前

    对!请使用版本控制工具。SVN的使用非常简单,所以我建议这样做。

    可能有用的一件事是你可以使用 Eclipse + PyDev (对于Python)+ Subeclipse (为您的SVN)。这应该是一个很好的独立于平台的堆栈,它为您赢得了一个支持GUI的SVN客户机。一定要检查插件 Mylyn 这与大多数Eclipse包一起提供—它真的很棒。

    Windows用户的另一种选择是 TortoiseSVN -按照他们的教程创建存储库。

    对于单个用户来说,最简单的方法是使用“文件”协议。稍微困难的是要建立一个合适的SVN服务器,在你更好地理解SVN之前,你可能会想推迟它——它让你可以在多台机器上工作。

        3
  •  2
  •   jvanderh    16 年前

    SVN是一个非常好的版本控制系统。它被用于许多重要的项目中,并且易于使用,同时具有强大的选项。

    如果你的本地副本指向谷歌代码。您可以执行一个导出操作,它从本质上提取版本控制信息,然后将其导入到本地SVN。

    这意味着您将失去所有以前的历史,从零开始,从那时起就有历史,您在本地所做的更改,并提交给您的SVN。

    如果您需要在您的本地SVN中保留Google代码中所有提交的历史记录,那么就让我们知道这是可以做到的。

    如果您还需要在某个时候将您的本地代码提交回Google代码,那么也让我们知道,以解释如何做到这一点。

    希望这有帮助。

        4
  •  1
  •   pgs    16 年前

    svn commit 将您的更改提交到(远程)存储库。如果您想在推送到远程存储库之前在本地签入(如果有的话),那么像git或mercurial这样的分布式工具就是您想要的。

        5
  •  1
  •   Nick Lewis    16 年前
    svnadmin create project-local-repo
    svn checkout file:///path/to/project-local-repo project-branch
    svn export http://PROJECT.googlecode.com/svn/trunk/ project-branch
    

    这将(应该)在您的计算机上的ProjectLocalrepo中为您的分支创建一个新的存储库,并从该存储库签出到ProjectBranch文件夹中。然后它会将文件的干净副本从主repo导出到您的项目分支文件夹中。然后,您只需要将这些文件添加到(本地)repo并提交,这样就可以很好地执行了。不过,这完全是未经测试和假设的。

        6
  •  1
  •   tomzx    16 年前

    对。

    您可以使用创建本地存储库

    svnadmin create repositoryName
    

    然后您可以使用常规的svn命令执行第一次签出。

    svn checkout file:///path/to/your/repositoryName
    

    只需确保你确实是通过谷歌代码导出你已经获得的项目,而不是通过SVN结帐。否则,您将遇到另一个存储库已有的.svn文件的问题。将从导出中获得的所有文件移到新创建的本地副本,将所有文件添加到SVN并提交。

    当您想移植您的更改时,只需

    svn update
    

    包含已签出的Google代码存储库版本的目录,覆盖所有已更改的文件(或使用diff进行更改),然后提交回存储库。