21

您如何为您的主文件夹中的代码项目组织您的个人工作区?您如何保持工作空间高效地同时处理多个项目?


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

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

特别是在同时维护多个代码项目时,您发现哪种文件夹结构有用?当您下载各种开源代码项目时,如何保持所有各种源代码树井井有条,而又不会过多地弄乱您的工作空间?

特别是我想知道有什么技巧或技巧可以使项目易于通过命令行访问并易于浏览,同时在您需要专注于特定项目时让路。

是否有有用的约定可以方便地保持各种源存储库的有序性?特别是使用 git,你如何保持不同的分支和相关的存储库井井有条?您是否经常吹走工作副本并定期从源代码控制中完全刷新?你保留什么,为什么?如果一个特定项目有很多路径依赖项,你必须映射到你自己的主文件夹结构,你如何处理命名空间和路径?

bin 文件夹和常用库呢?如果您需要为各种项目(可能是不同版本的 PHP、Ruby、Perl、Web 服务器、编译器等)创建大量潜在的开发环境,您将如何管理这一点。

对于经验丰富的系统管理员来说,从经验中哪些有效,哪些无效?

您如何使其尽可能简单但又不至于太简单?

什么让您可以最大程度地灵活地同时处理多个项目?

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

您如何清理或清理您的整个工作空间,以便您可以从一张白纸开始,而不会失去对过去项目的宝贵源代码和组织效率的访问?

4

4 回答 4

13

我将自己编写的软件保存在一个特殊的目录中,该目录以我的主要网站命名——为了争论,我们称它为“杂耍”。我有 ~/juggle/software/ 里面是我编写的每个项目的子目录(通常用 git 管理)和 ~/juggle/websites/ 在其中我有每个网站域的子目录,无论是原始 html 还是什么像 webgen 或 staticmatic。

为了帮助我在它们之间跳转,我使用了与 bash 非常相关的“apparix”。

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

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

$ to wolfsbaen

对于我下载的软件,我有 ~/software/ 并且在里面:

  • 档案 - 保存下载的源 tarball
  • 文档 - 用于下载的 HTML 文档和 PDF 书籍
  • hack - 用于尝试新想法或软件库的一次性项目
  • 项目 - 对于我合作但不是我自己开始的项目
  • 简单 - 用于可以在解压目录中运行的 bash/python/ruby 程序
  • subversions - 适用于所有版本控制检查:cvs、svn、git、hg 等。
  • unpacked - 用于在我编译之前解压的 tarball

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

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

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

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

于 2009-09-12T01:51:17.493 回答
3

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

d:\development

在其中,我所有的项目都是子文件夹(可能是 20 个左右)。在他们每个人中,是

\trunk
\branches
\tags

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

于 2009-09-12T01:20:48.970 回答
3

您如何为您的主文件夹中的代码项目组织您的个人工作区?

就 UNIXy 而言,我将项目文件夹放在 ~/dev 下。我通常会从 Subversion 中将某些内容检出到这些项目文件夹中。

什么让您可以最大程度地灵活地同时处理多个项目?

对于 Web 项目,维护一组基于 Apache名称的虚拟主机对于同时处理多个项目非常方便。http://foo.localhost/可以指向 ~/dev/foo/public,http://bar.localhost/-> ~/dev/bar/public,等等。

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

于 2009-09-12T01:51:14.080 回答
1

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

我不断更换 linux 发行版,有时使用 windows 工作。所以我将硬盘分区为 4 个驱动器。

  1. 视窗
  2. linux
  3. 主要的
  4. 额外的一个


我所有的工作都在 NTFS 的第三个驱动器中进行,因此可以在 Windows 和 linux 中访问它。(在 linux 中安装此驱动器时,您可能需要进行一些fstab配置以免混淆文件权限)。现在在这个驱动器中,我放置了以下文件夹。

  • 文件
    • 我存储的所有文件(例如书籍、白皮书等)
  • 图片
  • 音乐
    • 歌曲
    • 播放列表(目前使用女妖)
  • 电影
  • 工作
    • 办公室
      • 办公项目1
      • 办公室项目2
    • 个人的
      • 公共(主要是我在 github 上发布的项目)
        • 个人项目1
        • 个人项目 2
      • 私人的
        • 个人项目 3
        • 个人项目 4
    • 资源
      • 主要是从 github 或任何其他源代码或相关内容下载的 repos
    • 基本上一切都先放在这里,以防我不知道该放在哪里或者我很着急。后来我根据需要整理它们
    • 我还在这个目录中设置了指向我经常访问的其他各种目录的软链接。原因是,我将scratch文件夹设置为Desktop
  • 倾倒
    • 我已经解决但必须保留一段时间然后删除的事情
    • 我在闲暇时间一直在清理这个文件夹
  • 投递箱
    • 我从多个设备访问的东西很少存储在保管箱中。但由于保管箱隐私问题,我无法将所有内容存储在其中。我仍在为此寻找理想的解决方案。我试图在我自己的服务器上运行开源保管箱替代品,但在麻烦中维护它们。(也因为我来自第三世界国家之一,必须多次下网)
    • 目前我推出了一个简单的网络应用程序来存储我喜欢的报价/书籍之类的东西。我工作时也会记很多笔记。现在我将它们存储在保管箱中,但很快我会将它们移动到我的应用程序中。

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

于 2017-10-15T16:34:16.710 回答