代码之家  ›  专栏  ›  技术社区  ›  Thomas L Holaday

对于git这样的DVCS,什么目录结构是有意义的?

  •  11
  • Thomas L Holaday  · 技术社区  · 17 年前

    我习惯的是:

    • 在我的开发机器上:
      • 名为~/work的目录
      • 经常出现名为~/work/NY/release/1.3/project、~/work/NY/test/1.3b/project等的子目录
      • 有时,名为~/proxy/NY、~/proxy/NC等的目录包含一次性本地缓存的存档,以减少读取的网络流量。这些目录可以随时删除。

    但对于DVCS来说,这没有意义

    • 存档在我的开发机器上,但出于备份原因,一个近乎克隆的文件在远程机器上。
    • 看起来我有一个名为~/git/git.git的目录,里面有很多git。

    2 回复  |  直到 17 年前
        1
  •  12
  •   Matthew Rankin val    17 年前

    我同意T.E.D.的回答,因为我更喜欢将每个项目保存在一个开发目录中。然而,当我在终端中查看bash列表时,我喜欢很容易地看到三件事:

    1. 这是什么类型的仓库——Git、Mercurial还是Subversion

    我发现,通过为我的项目使用以下命名约定,我可以很容易地做到这一点:

    ~/development/project.whatwhere.who
    

    由于使用Mercurial克隆本地项目时很常见,我在目录结构中添加了一个层,如下所示:

    ~/development/project.whatwhere.who/project/   # Initial clone from remote repo
    ~/development/project.whatwhere.who/project.local.blah_descriptor/  # Local hg clone
    

    这 whatwhere

    • github---存储在github上的Git仓库
    • gitorious——存储在gitorious.org上的Git仓库
    • git---git仓库存储在其他地方
    • gitsvn——使用存储在其他地方的git svn克隆的Subversion仓库
    • hgbit---存储在bitbucket.org上的Mercurial仓库
    • hg.gcode---存储在谷歌代码上的Mercurial仓库
    • hg---存储在其他地方的Mercurial回购
    • svn.gcode——存储在谷歌代码上的Subversion仓库
    • svn.sforge---存储在Sourceforge.net上的Subversion仓库
    • svn.work——存储在我们公司svn服务器上的Subversion仓库
    • svn---存储在某处的Subversion仓库

    这 who 约定只是所需人员的用户名。

    以下是一些项目示例,它们都位于我的 ~/development/ 目录:

    fabric.github.bitprophet      # Bitprophet's fabric project cloned from Github
    fabric.github.myusername      # My fork of the fabric project from Github
    virtualenv.hgbit.ianb         # Ianb's virtualenv project cloned from Bitbucket
    growl.hg.gcode                # Growl project cloned from Google code
    ledgersmb.svn.sforge          # LedgerSMB project checked out from Sourceforge
    coldfire.gitsvn               # Coldfire Subversion project at work cloned using git-svn
    coldfire.svn                  # Coldfire Subversion project at work checked out with svn
    

    如果你的项目太多,为了帮助组织你的项目,你可能想在下面添加一个图层 ~/development 组织目录。例如,您可以有以下目录:

    ~/development/workprojects/
    ~/development/opensrcprojects/
    ~/development/personalprojects/
    

    备注 :我通常使用Git进行DVCS,所以这个答案很可能朝着这个方向倾斜。

        2
  •  8
  •   T.E.D.    17 年前

    由于Git的工作方式,你真的不想把存储库(或分支)的工作目录放在一个目录中 在...之下 另一个存储库的工作目录。它会一直希望将子目录的内容放入父目录的存储库中。

    如果你把所有分支都作为兄弟目录,那就很好了。

    我倾向于做的(无论使用Git、cvs还是(ick)SourceSafe)是有一个Development目录,每个项目、分支等都是其中的一个子目录。