如何组织代码工作区和主文件夹?

时间:2009-09-12 01:14:52

标签: organization workspace

如何为主文件夹中的代码项目组织个人工作空间?那么如何保持工作空间同时处理多个项目的效率呢?


我的问题最重要的方面是上面。除非您想要解决该主题的特定子部分,否则您可以停止阅读。以下是有关工作空间组织的各种相关问题。无需解决所有这些问题。有兴趣听到以下一些相关问题的部分答案。

这个问题主要是在UNIX和OS X的上下文中。基于Windows的用户可以提供建议,但我最感兴趣的是通常在UNIX而不是windows中找到的主文件夹和命令行约定(除非你使用cygwin)。

特别是在同时维护多个代码项目时,您认为哪种文件夹结构有用?当你下载各种开源代码项目时,如何保持所有各种源代码树的组织而不会过多地混乱你的工作区?

特别是我想知道什么技巧或提示可以让项目通过命令行轻松访问,并且当您需要专注于特定项目时可以轻松浏览。

您是否找到了有用的约定来保持各种源存储库的有序性?特别是对于git,你如何组织不同的分支和相关的存储库?你经常吹掉工作副本并经常从源代码控制中刷新吗?你一直在做什么,为什么?如果某个特定项目有很多路径依赖项需要映射到您自己的主文件夹结构,那么如何处理命名空间和路径呢?

bin文件夹和公共库怎么样?如果您需要为各种项目(可能是不同版本的PHP,Ruby,Perl,Web服务器,编译器等)创建许多潜在的开发环境,您如何管理它。

对于那些经验丰富的系统管理员来说,有哪些经验和什么不起作用?

你如何保持尽可能简单但不太简单?

是什么让您最灵活地同时处理多个项目?

您是否经常将项目移出工作区并从源代码管理中重新导入。如何在减少过于频繁地重建项目环境的需要的同时防止残留物的堆积?

如何清理或吹走整个工作区,这样您就可以从空白的平板开始,而不会失去对过去项目中获得的宝贵源代码和组织效率的访问权限?

4 个答案:

答案 0 :(得分:12)

我将自己编写的软件保存在一个特殊目录中,以我的主网站命名 - 为了争论,我们称之为'juggle'。我有〜/ juggle / software /里面是我编写的每个项目的子目录(通常用git管理)和〜/ juggle / websites /,我有一个每个网站域的子目录,无论是原始html还是其他东西像webgen或staticmatic。

为了帮助我在它们之间跳转,我使用'apparix'很好地绑定了bash。

$ cd ~/juggle/software/wolfsbaen
$ bm # bookmarks this with apparix

所以现在我可以从任何地方做到这一点

$ to wolfsbaen

对于我下载过的软件,我有〜/ software /,里面有:

  • archives - 保留下载的源代码压缩包
  • 文档 - 适用于下载的HTML文档和PDF书籍
  • hack - 用于尝试新想法或软件库的一次性项目
  • 项目 - 我合作的项目,但没有自己开始
  • simple - 用于可以在解压缩目录中运行的bash / python / ruby​​程序
  • 颠覆 - 用于所有修订控制检查:cvs,svn,git,hg等。
  • unpacked - 在编译之前用于解压缩的tarball

我也有〜/ bin用于我编写的有用脚本,并且发现自己一直在使用。我将它添加到〜/ .bashrc中的PATH

我不认为你的其他问题真的适用于我;除了使用git之外我几乎不用闪电战任何工作区。我在工作目录中创建新分支,如果我必须突然切换分支,则存储最近的更改。我还保留了我所有软件和网站资源的裸存储库克隆:

$ git clone --bare . /srv/git/wolfsbaen.git

在每个工作阶段结束时,我都会对此进行推动。这使得/ srv / git成为备份的明显选择。

答案 1 :(得分:3)

我不会回答你的所有问题;但是,我会说,我使用SVN,并遵循他们的项目约定。所以我有一个名为:

的文件夹
d:\development

在其中,我的所有项目都是子文件夹(大约20个左右)。在每一个中,都是

\trunk
\branches
\tags

就是这样。我家里有第二台机器是我的服务器(也是媒体中心:P),在它上面我有一个在apache下运行的SVN,还有trac来管理每个机器中的任务和错误。我也有CC.net,用于构建。

答案 2 :(得分:3)

  

你如何组织你的个人   您的代码项目的工作空间   你的主文件夹?

就UNIXy而言,我将项目文件夹放在〜/ dev下。我通常最终会将Subversion中的内容检出到那些项目文件夹中。

  

最让你失望的是什么   灵活地处理多个问题   项目一次?

对于Web项目,维护一组Apache name-based virtual hosts对于同时处理多个项目非常方便。 http://foo.localhost/可以指向〜/ dev / foo / public,http://bar.localhost/ - > 〜/ dev / bar / public,等等。

GNU Screen也是我本地开发工作流程的关键。如果我需要将齿轮切换到另一个项目,我只需要Ctrl-a,c并使用一个新的隔离终端。

答案 3 :(得分:1)

我想分享自己在组织系统方面的经验(即使问题太老了,我希望这可能有助于某人或我可能会得到更好的建议)

我不断更改Linux发行版,有时使用Windows工作。所以我在4个硬盘中分区硬盘。

  1. 的Linux
  2. main
  3. 额外的一个

  4. 我的所有工作都在第三个驱动器中进行,这是NTFS,因此可以在Windows和Linux中访问它。 (您可能需要一些cycle配置,以便在Linux中安装此驱动器时不会弄乱文件权限。现在在这个驱动器中,我放了以下文件夹。

    • 文档
      • 我存储的所有文件(例如书籍,白皮书等)
    • 图片
    • 音乐
      • 歌曲
      • 播放列表(目前正在使用女妖)
    • 工作
      • 办公室
        • office project 1
        • office project 2
      • 个人
        • public(主要是我在github上发布的项目)
          • 个人项目1
          • 个人项目2
        • 私人
          • 个人项目3
          • 个人项目4
      • 资源
        • 主要是从github或任何其他源代码或相关内容下载的repos
    • 划痕
      • 基本上一切都在这里,以防我不知道放在哪里或者我赶时间。后来我根据需要将它们整理出来
      • 此外,我将此目录中的软链接设置为我经常访问的各种其他目录。原因是,我将fstab文件夹设置为scratch
    • 转储
      • 我已经解决过的问题,但是有时间可以保留一段时间然后删除
      • 我一直在闲暇时间清理这个文件夹
    • 收存箱
      • 我从多个设备访问的内容很少存储在Dropbox中。但由于Dropbox隐私问题,我无法将所有内容存储在其中。我仍在为此寻找理想的解决方案。我试图在我自己的服务器上运行opensource dropbox替代品,但是将它们保存在hassel中。 (同样,因为我来自世界第三大国之一,不得不多次离开)
      • 目前我推出了一个简单的网络应用程序来存储我喜欢的报价/书籍等内容。我工作时也会记下很多笔记。现在我将它们存储在Dropbox中,但很快我就会将它们移到我的应用程序上。

    当我安装新的操作系统时,首先我将默认文件夹和书签位置(如桌面,音乐,文档等)更改为主驱动器文件夹和设置保管箱。我将scratch文件夹设置为桌面
    对于配置文件(编辑器/ shell等),您可以使用主驱动器/ dropbox / dotfiles。
    同样在旁注,我使用zsh / vim / emacs和一些有趣的插件来提高我的工作效率。