到目前为止,在我的编程生涯中,我主要从事小型项目,直接在Linux开发主机上编辑PHP / Perl / Python文件,然后将文件复制到实时服务器上的同一目录中,以将其投入生产。
我现在正在尝试通过学习如何使用Git以及如何牢记Git正确编写代码来进行设置。我想学习这种情况下的最佳实践:
这是一个名为“ BigFun”的项目,该项目还使用了一些库,这些库具有许多项目所共有的任务。
/home/projects/BigFun/bin/script1.pl
/home/projects/BigFun/bin/script2.pl
/home/projects/BigFun/bin/script3.pl
/home/projects/BigFun/lib/FunMaker.pm
/home/projects/common/lib/Utilities.pm
/home/projects/common/lib/Format.pm
如果此程序不是由Git管理的,并且我知道文件将永远不会移动,则可以执行以下操作:
#!/usr/bin/perl
use warnings;
use strict;
use lib '/home/projects/BigFun/lib';
use FunMaker;
use lib '/home/projects/common/lib';
use Utilities;
但是一旦由Git管理,则任何人都可以检出这些文件并将它们放在自己的开发空间中。如果您的开发根目录为“ C:\ My Projects \ BigFun”,则硬编码的URL将不再起作用。
因此,一些问题:
我大概可以假设BigFun的“ lib”目录将始终相对于“ bin”目录。因此,也许我可以将第3行更改为use lib '../lib';
。那是正确的解决方案吗?
但是,我列出的示例代码似乎有可能被拆分成两个存储库-一个用于BigFun,另一个作为“通用”存储库,其中包含许多项目使用的一些工具。当发生这种情况时,在我看来,BigFun代码将无法知道在哪里可以找到“通用”库。/home/projects/common/lib
不能保证也不能工作../../common/lib
。Git处理这种事情的正常方法是什么?
我正在研究《 Pro Git》一书,但还没有找到任何答案。感谢任何能为我指出正确方向的人!
您的问题不是关于Git的,而是关于协作的。绝对路径会强制您的软件的所有用户使用相同的目录布局,这是不可接受的。没有像样的软件可以做到这一点。避免使用软件中的绝对路径是规范,无论您使用或不使用哪个版本控制系统。
如何使用严格的相对路径而不是绝对路径使软件正常工作?这取决于软件/框架/语言。为了使相对路径更有意义,您需要考虑以下问题:相对于哪里?这里有一些想法作为锚从相对路径可以考虑:
每种语言通常都有某种包装机制。打包的目的是,使用该语言的开发人员可以创建一个标准软件包,其内容的组织方式应使该语言的标准工具可以安装该软件包,并将软件添加到该语言的系统级库中,或自定义用户库,或指定的库位置。一旦从标准软件包中安装了该软件,就可以像使用任何其他已安装的软件一样使用该软件。
在你的榜样,use warnings;
并且use strict;
无需任何设置工作,因为这些库安装在系统中。系统会找到它们相对于Perl安装目录的位置。大致说来。
因此,您需要做的是:
将FunMaker
和Utilities
安装为标准Perl软件包后,您将能够简化脚本,如下所示:
#!/usr/bin/perl
use warnings;
use strict;
use FunMaker;
use Utilities;
当然,您将必须记录脚本的依赖项(FunMaker
,Utilities
)以及如何安装它们(尤其是这些程序包的托管位置)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句