До этого момента в моей карьере программирования я в основном работал над небольшими проектами, редактировал файлы PHP/Perl/Python непосредственно на хосте Linux dev, а затем копировал файлы в один и тот же каталог на реальном сервере, чтобы вставить их в производство.Как избежать абсолютных путей в моем коде при использовании Git?
Я пытаюсь настроить его, изучив, как использовать 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 , тогда любой сможет проверить эти файлы и поместить их в свое собственное пространство разработки. Жестко закодированные URL-адреса больше не будут работать, если ваш rootdir для разработки - «C: \ My Projects \ BigFun».
Так, некоторые вопросы:
я, вероятно, можно предположить, что «Lib» каталог BigFun всегда будет относительно каталога «Bin». Поэтому, возможно, я смогу изменить строку 3 на
use lib '../lib';
. Это правильное решение?Похоже, однако, что этот пример кода я перечислил бы разделиться, чтобы два репозиториев - один для BigFun, а другой как «общий» репо, содержащий некоторые инструменты, которые используются многие проекты. Когда это произойдет, мне кажется, что код BigFun не сможет узнать, где найти «общие» библиотеки.
/home/projects/common/lib
отнюдь не гарантированно работает, и не будет../../common/lib
. Каков нормальный способ Git справиться с чем-то подобным?
Я работаю над книгой «Pro Git», но я еще не нашел ничего, чтобы ответить на эти вопросы. Спасибо всем, кто может указать мне в правильном направлении!
Спасибо, @janos. Поэтому, может быть, мне нужно задать еще один вопрос. Хотя я сделал этот пример, используя Perl, я действительно начинаю переход на Python. Я могу получить книгу Питона. Я могу узнать о программировании и синтаксисе Python. Он расскажет мне все о языке и о том, что я могу с ним сделать. Но куда идти, чтобы изучить хорошие практики совместного программирования, которые вы описываете здесь? (желательно на основе python?) Я долгое время работал разработчиком, но никогда не должен делать что-то совместным ... до сих пор. –
Должны быть книги о хороших совместных практиках, но я их не знаю. Я предлагаю критически взглянуть на программное обеспечение, написанное другими, а затем применить те же самые высокие стандарты к своей собственной работе. Или поставите себя на место ваших потенциальных пользователей и попытайтесь представить моменты WTF, которые они могут иметь (плохой README, отсутствующая документация, отсутствие тестов, код спагетти). Что касается Python, вам повезло, есть тонна ресурсов онлайн для правильной упаковки, это должен быть довольно безболезненный процесс. – janos