Один проект, Несколько клиентов с мерзавцем?

Используйте следующую функцию:

DATEADD(type, value, date)
  • дата является датой, которой Вы хотите управлять

  • , значение является значением integere, которое Вы хотите добавить (или вычитать при обеспечении отрицательного числа)

  • , тип является одним из:

    • yy, yyyy: год
    • qq, q: четверть
    • мм, m: месяц
    • dy, y: день года
    • dd, d: день
    • неделя, ww: неделя
    • собственный вес, w: рабочий день
    • гд: час
    • миля, n: минута
    • ss или s: второй
    • мс: миллисекунда
    • мГц: микросекунда
    • нс: наносекунда

ИЗБРАННЫЙ DATEADD (dd, 1, GETDATE ()) возвратит текущую дату + 1 день

http://msdn.microsoft.com/en-us/library/ms186819.aspx

12
задан bahrep 23 July 2015 в 12:31
поделиться

5 ответов

In addition to cpharmston's answer, it sounds like you need to do some refactoring to separate out what is truly custom for each client and what isn't. Then you may consider adding additional repositories to track the customizations for each client (entirely new repos, not branches). Then your deployment can pull your "core" from your main repo, and the client-specific stuff from that repo.

6
ответ дан 2 December 2019 в 21:03
поделиться

Я бы не стал использовать ветки для выполнения того, что вы пытаетесь сделать.

В системе управления версиями ветки предназначены для использования для вещей, которые должны быть объединены обратно в ствол. Например, Алекс Гейнор провел свое лето кода , работая над веткой Django, которая позволяет поддерживать несколько баз данных , с целью в конечном итоге объединить ее обратно в ствол Django.

Checkouts (или клоны в случае Git) могут лучше соответствовать тому, что вы пытаетесь сделать. Вы должны создать репо, содержащее все базовые файлы проекта (и файлы .sample, если хотите), и клонировать репо во все различные места, где вы хотите развернуть код. Затем вручную создайте файлы конфигурации и настройки при каждом развертывании (постарайтесь не добавить их в репо). Каждый раз, когда вы обновляете код в репозитории, запускайте pull для каждого развертывания, чтобы обновить код. Альт!

6
ответ дан 2 December 2019 в 21:03
поделиться

Мэтью Талберт прав, вам действительно нужно отделить нестандартные вещи от нестандартных. Если вы можете провести рефакторинг всего основного кода, чтобы он содержался в одном каталоге, ваши клиенты могут использовать его как подмодуль git только для чтения. Дополнительным преимуществом является то, что вы блокируете их в явной версии основного кода. Это означает, что им придется сознательно обновиться до более новой версии, что вам и нужно для производственного кода.

1
ответ дан 2 December 2019 в 21:03
поделиться

. Другие ответы верны, вы будете в наилучшей форме для обслуживания в той степени, в которой вы отделяете свой основной код от пользовательского, -клиентский код. Тем не менее, я выйду из толпы и скажу, что если вы не можете этого сделать (скажем, потому что вам нужно добавить дополнительные функции в основной код для определенного клиента), ветки DVCS будут отлично работать для того, что вы хотите сделать. . Хотя я бы, вероятно, порекомендовал для этой цели ветки по каталогам, а не в репо (git также может делать ветки по каталогам, это не что иное, как клонированное репо, которое расходится).

Я использую hg, а не git, но все мои проекты Django клонированы из одного и того же базового "шаблона проекта" репо, в котором есть служебные сценарии, базовый общий набор INSTALLED_APPS и т. д. Это означает, что когда я вношу изменения в этот шаблон проекта, я могу легко объединить эти общие обновления в существующие проекты. Это не совсем то, что вы планируете, но похоже. Иногда вам придется иметь дело с конфликтами слияния, если вы измените ту же область кода в ядре, которую вы уже настроили для конкретного клиента.

1
ответ дан 2 December 2019 в 21:03
поделиться

После прочтения всех ваших ответов (спасибо!) Я решил сначала провести рефакторинг моей структуры проекта django, чтобы изолировать ядро ​​и разные приложения во вложенной папке apps. Это делает проект более чистым, а настройка .gitignore в файле различных ветвей упрощает использование веток git для управления разными клиентами и настройками!

0
ответ дан 2 December 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: