@Kotovasofa

Как двум разработчикам одновременно разрабатывать один сайт на wordpress?

Добрый день, интересует вопрос.
Разрабатываем с коллегой один сайт(модульно\постранично), и если с файловой структурой все понятно - т.е используем git и сливаем всё в master ветку, то как быть с базой данных? Большинство телодвижений происходит в ней, и если каждый будет заливать свою базу, всё будет перетираться.

Как поступают в данном случае разработчики которые работают над проектом коллективно?
  • Вопрос задан
  • 392 просмотра
Решения вопроса 3
firedragon
@firedragon
Senior .NET developer
1. Создайте скрипты для модификации БД.
2. Не изменяйте чужих данных только добавляйте.
3. Создайте скрипты для дропа данных см п2
4. создайте скрипты для seeddata

Структура папок. По идее любое ваше изменение можно откатить просто запустив нужный скрипт.

  1. SQL
  • up
    • up_2020_10_28_01.sql
    • up_2020_10_28_02.sql

  • down
    • down_2020_10_28_01.sql
    • down_2020_10_28_02.sql

  • seed
    • seed_2020_10_28_01.sql
    • seed_2020_10_28_02.sql




Ниже пример MSSQL но это применимо к любой базе
CREATE TABLE [Telemetry] (
    [Id] bigint NOT NULL IDENTITY,
    [Login] nvarchar(200) NULL,
    [DisplayName] nvarchar(200) NULL,
    [Url] nvarchar(400) NULL,
    [Start] datetime2 NOT NULL,
    [End] datetime2 NULL,
    [Duration] int NULL,
    [PageName] nvarchar(400) NULL,
    [CourseId] uniqueidentifier NOT NULL,
    [PageNumber] nvarchar(200) NULL,
    CONSTRAINT [PK_Telemetry] PRIMARY KEY ([Id])
);
GO


CREATE INDEX [IX_Telemetry_CourseId] ON [Telemetry] ([CourseId]);
GO


CREATE INDEX [IX_Telemetry_Login] ON [Telemetry] ([Login]);
GO


CREATE INDEX [IX_Telemetry_PageNumber] ON [Telemetry] ([PageNumber]);
GO


CREATE INDEX [IX_Telemetry_Status] ON [Telemetry] ([Start]);
GO

------ Изменение размера -----------
DROP INDEX [IX_Telemetry_PageNumber] ON [Telemetry];
DECLARE @var0 sysname;
SELECT @var0 = [d].[name]
FROM [sys].[default_constraints] [d]
INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'PageNumber');
IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var0 + '];');
ALTER TABLE [Telemetry] ALTER COLUMN [PageNumber] nvarchar(20) NULL;
CREATE INDEX [IX_Telemetry_PageNumber] ON [Telemetry] ([PageNumber]);

GO

DROP INDEX [IX_Telemetry_Login] ON [Telemetry];
DECLARE @var1 sysname;
SELECT @var1 = [d].[name]
FROM [sys].[default_constraints] [d]
INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'Login');
IF @var1 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var1 + '];');
ALTER TABLE [Telemetry] ALTER COLUMN [Login] nvarchar(20) NOT NULL;
CREATE INDEX [IX_Telemetry_Login] ON [Telemetry] ([Login]);

GO

DECLARE @var2 sysname;
SELECT @var2 = [d].[name]
FROM [sys].[default_constraints] [d]
INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'DisplayName');
IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var2 + '];');
ALTER TABLE [Telemetry] ALTER COLUMN [DisplayName] nvarchar(100) NULL;

GO

INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'20200922061931_ChangeSizes', N'3.1.8');

GO


-- изменение курса с гуида на строку

EXEC sp_rename N'[Telemetry].[IX_Telemetry_Status]', N'IX_Telemetry_Start', N'INDEX';

GO

DROP INDEX [IX_Telemetry_CourseId] ON [Telemetry];
DECLARE @var0 sysname;
SELECT @var0 = [d].[name]
FROM [sys].[default_constraints] [d]
INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'CourseId');
IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var0 + '];');
ALTER TABLE [Telemetry] ALTER COLUMN [CourseId] nvarchar(38) NOT NULL;
CREATE INDEX [IX_Telemetry_CourseId] ON [Telemetry] ([CourseId]);

GO


GO
Ответ написан
Sanes
@Sanes
!
Если вы имеете в виду базу данных, то для этого придумали миграции и посев данных. Как с этим обстоит в WP не скажу.
Ответ написан
profesor08
@profesor08
Как вариант использовать одну тестовую базы данных. Поднимаешь у себя локально и шаришь коннект товарищу, либо на впс. Каждый работает над своим и чужое не трогает. Миграции само собой писать придется.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы