Используйте следующую функцию:
DATEADD(type, value, date)
дата является датой, которой Вы хотите управлять
, значение является значением integere, которое Вы хотите добавить (или вычитать при обеспечении отрицательного числа)
, тип является одним из:
ИЗБРАННЫЙ DATEADD (dd, 1, GETDATE ()) возвратит текущую дату + 1 день
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.
Я бы не стал использовать ветки для выполнения того, что вы пытаетесь сделать.
В системе управления версиями ветки предназначены для использования для вещей, которые должны быть объединены обратно в ствол. Например, Алекс Гейнор провел свое лето кода , работая над веткой Django, которая позволяет поддерживать несколько баз данных , с целью в конечном итоге объединить ее обратно в ствол Django.
Checkouts (или клоны в случае Git) могут лучше соответствовать тому, что вы пытаетесь сделать. Вы должны создать репо, содержащее все базовые файлы проекта (и файлы .sample, если хотите), и клонировать репо во все различные места, где вы хотите развернуть код. Затем вручную создайте файлы конфигурации и настройки при каждом развертывании (постарайтесь не добавить их в репо). Каждый раз, когда вы обновляете код в репозитории, запускайте pull для каждого развертывания, чтобы обновить код. Альт!
Мэтью Талберт прав, вам действительно нужно отделить нестандартные вещи от нестандартных. Если вы можете провести рефакторинг всего основного кода, чтобы он содержался в одном каталоге, ваши клиенты могут использовать его как подмодуль git только для чтения. Дополнительным преимуществом является то, что вы блокируете их в явной версии основного кода. Это означает, что им придется сознательно обновиться до более новой версии, что вам и нужно для производственного кода.
. Другие ответы верны, вы будете в наилучшей форме для обслуживания в той степени, в которой вы отделяете свой основной код от пользовательского, -клиентский код. Тем не менее, я выйду из толпы и скажу, что если вы не можете этого сделать (скажем, потому что вам нужно добавить дополнительные функции в основной код для определенного клиента), ветки DVCS будут отлично работать для того, что вы хотите сделать. . Хотя я бы, вероятно, порекомендовал для этой цели ветки по каталогам, а не в репо (git также может делать ветки по каталогам, это не что иное, как клонированное репо, которое расходится).
Я использую hg, а не git, но все мои проекты Django клонированы из одного и того же базового "шаблона проекта" репо, в котором есть служебные сценарии, базовый общий набор INSTALLED_APPS и т. д. Это означает, что когда я вношу изменения в этот шаблон проекта, я могу легко объединить эти общие обновления в существующие проекты. Это не совсем то, что вы планируете, но похоже. Иногда вам придется иметь дело с конфликтами слияния, если вы измените ту же область кода в ядре, которую вы уже настроили для конкретного клиента.
После прочтения всех ваших ответов (спасибо!) Я решил сначала провести рефакторинг моей структуры проекта django, чтобы изолировать ядро и разные приложения во вложенной папке apps. Это делает проект более чистым, а настройка .gitignore в файле различных ветвей упрощает использование веток git для управления разными клиентами и настройками!