git – Designing a Source Code Control for SaaS with B2B and B2C Software


I am working on a SaaS product that is operational in production. However, we will now sell this product so that businesses can work locally on their servers.

I am currently working with the branch model below:

Master Branch <--> Development Branch <--> Features Branches


Everything would work properly until companies request changes. A separate branch should be updated with the latest changes applied to the main B2C branch.

so in fact, there are 3 problems with me.

  1. Moving bugfixes from B2C to B2B
  2. Moving specific features from B2C to B2B only.
  3. Leave customer branches with the custom requirements intact (a customer may have a custom requirement that he does not want to be replaced by the B2C update).

What solution should I apply for this?

Version Control – Should I accept that a client adds changes to the source code on an ongoing development?

I am currently in a situation (I am a technical manager) where the client has changed the source code itself, and I am told to accept the changes and continue working on this version. Technically, he owns the code, but he decided to make a change and did not inform me.

Its modifications will not follow any convention, no good practice and, because of a reporting requirement, have made a change to the data structure.

My boss told me to accept it and to occupy it. I replied by asking him then why should I impose any standard on my team if a customer ruined everything we took so much effort to maintain the quality of the code.

The customer acknowledged that he would agree to cancel the changes, but data has already been created with this change and canceling these changes would mean losing them.

Regardless of the details, my question remains. Should I accept the fact that the client has modified the source code and that I have to continue with it, or should I remain faithful to the standards of the team and refuse to continue?

Edit: I did some research on the subject but I found only topics on the ownership of the source code.

Bidirectional Synchronization of Magento Open Source and Salesforce

Is it possible to do it and how? Not finding connectors synchronized in both directions, just connect Magento to Salesforce. Do we need to create our own REST API?

How to search for a verse from the Bible in a source that may contain tracks?

My WordPress system contains publications with a field containing biblical references and ranges, for example. "John 5,1-10, Matthew 3,2, Mark 1,1-5".
The user searching for "John 5.3" or "Matthew 3.2" or "Mark 1.2" should find this message.
Is it even possible from a SQL point of view? If not, what should I change in this approach?

development process – How to prevent bugs in enterprise-level configurations with a discipline similar to that of source code?

We have a system that allows our customers to coordinate their customers (buyers) so they can deliver their shopping within 45 minutes of order creation.

Each customer has a set of stores where orders are processed by buyers
and each customer has a schedule that specifies in which store and what time he / she will work.

However, we also have a feature that allows them to create orders only if the store is already set up in our systems and there are enough buyers at the time we plan to deliver the ordered.

As you can see, checking the acceptance of an order given in our system depends on the current time, store configuration and the program of the buyer.

We have managed our source code quite well: we perform code review, unit testing, and integration testing. However, we did not find a satisfactory way to manage store configurations, calendars and are as sensitive as the source code if there was a misconfiguration, for the client, it would be almost the same as if we had a bug in our source code because we would not let him create orders and their sales would decrease.

We would therefore like to find a way to manage the store configuration and schedules with a discipline similar to that used with our source code. we would like to have a way to test if the configuration is correct. Currently, we do this configuration via SQL scripts that are testable but the contributions may not be correct and we have no way to handle them or test them if they are correct.

Did you have a similar problem? Do you know of any tools, languages, or processes that would prevent us from making errors in the client configuration and having a centralized way to know what the actual configuration is in addition to examining the database tables?

By the way, we receive these configurations as spreadsheets from professionals who are talking to the customer.

postgresql – pg_restore: [archiver] did not find a magic string in the header of the file: please check the source URL and make sure it is accessible to the public

I've tried to transfer a dump file from my local Postgrel database (which I've loaded into Google Drive and accessible to the public) into my remote Heroku database with the help of Next URL:

heroku pg:backups:restore '' DATABASE_URL

I am already connected to my Heroku app from the terminal where I run the order.
but I had the same mistake twice. I was searching online and found topics such as pg_restore: (archiver) did not find a magic string in the file header, but I could not help but to do the link between the two, because I am very new to Postgrel. I hope you will indicate the problems. Much appreciated.

Starting restore of to postgresql-symmetrical-52186... done

Stop a running restore with heroku pg:backups:cancel.

Restoring... !
▸    An error occurred and the backup did not finish.
▸    waiting for restore to complete
▸    pg_restore finished with errors
▸    waiting for download to complete
▸    download finished with errors
▸    please check the source URL and ensure it is publicly accessible
▸    Run heroku pg:backups:info r002 for more details.

=== Backup r002
Database:         BACKUP
Started at:       2019-09-14 21:14:26 +0000
Finished at:      2019-09-14 21:14:27 +0000
Status:           Failed
Type:             Manual
Backup Size:      0.00B (0% compression)

=== Backup Logs
2019-09-14 21:14:27 +0000 pg_restore: (archiver) did not find magic string in file header
2019-09-14 21:14:27 +0000 waiting for restore to complete
2019-09-14 21:14:27 +0000 pg_restore finished with errors
2019-09-14 21:14:27 +0000 waiting for download to complete
2019-09-14 21:14:27 +0000 download finished with errors
2019-09-14 21:14:27 +0000 please check the source URL and ensure it is publicly accessible

What are the game engines for editing the source code at runtime? [on hold]

I want to know the game engines that can edit the source code at runtime. I know that godot could do it but I do not like the language used. and are there any python game engines to do it?

microservices – is there a unified term for open source and managed services in our HLD?

I am preparing a session on the HLD of our product for beginners.
It is a microservice-based system that includes several self-managed open source projects and other managed services (eg, Kafka, Redis, etc.).

I want to address these services in my presentation in a unified way – services that are not developed and maintained internally but that nevertheless play a role in the overall system environment.

Is there such a term concept, on which I can also go further?

7 – Bad image path for the property = "og: image" of the meta tag in the content display source

I have uploaded an image into my content. When I checked the source view of the page, it indicates the wrong image path for og:image property of the meta tag.

After downloading the image into my content, the path of the image is displayed as follows: and the image is present in this path


But when I check the source of display for the page, I have the path to the image


What exactly is the problem here? The two paths are different … Logically, path should be identical …. in the source view too

magento2 – Unable to set flat client columns with the help of a source entity

I'm trying to create a customer EAV that is always equal to 0 or 1, never zero. The main problem I encounter is to force the column into the customer_grid_flat table to not be nullable.

$customerSetup->addAttribute(Customer::ENTITY, 'is_company', (
    'type' => 'int',
    'backend' => '',
    'frontend' => '',
    'label' => 'Is a company',
    'input' => 'boolean',
    'class' => '',
    'source' => 'VendorModuleModelEntityAttributeSourceBooleanNotNull',
    'global' => ScopedAttributeInterface::SCOPE_GLOBAL,
    'visible' => true,
    'required' => true,
    'user_defined' => false,
    'default' => '0',
    'searchable' => true,
    'filterable' => true,
    'comparable' => true,
    'visible_on_front' => true,
    'system' => false,
    'is_used_in_grid' => true,
    'is_visible_in_grid' => true,
    'is_filterable_in_grid' => true,
    'is_searchable_in_grid' => true,
    'unique' => false,
    'apply_to' => '',

The BooleanNotNull class is as follows. I've intentionally left in my debugging.

class BooleanNotNull extends MagentoEavModelEntityAttributeSourceBoolean
    public function getFlatColumns()

        $attributeCode = $this->getAttribute()->getAttributeCode();
        return (
            $attributeCode => (
                'unsigned' => false,
                'default' => 0,
                'extra' => null,
                'type' => MagentoFrameworkDBDdlTable::TYPE_SMALLINT,
                'length' => 1,
                'nullable' => false,
                'comment' => $attributeCode . ' column',

I never see this debug message. It seems that the getFlatColumns function, originally defined in AbstractSource, never get called during the setup:upgrade or indexer:reindex orders, which are when the customer_grid_flat the table is updated.

In fact, watching MagentoFrameworkIndexerGridStructure who is actually rebuilding the flat table, I see this:

foreach ($fields as $field) {
    if ($field('type') === 'searchable') {
        $searchableFields() = $field('name');
    $columnMap = isset($field('dataType')) && isset($this->columnTypesMap($field('dataType')))
        ? $this->columnTypesMap($field('dataType'))
        : ('type' => $field('dataType'), 'size' => isset($field('size')) ? $field('size') : null);
    $name = $field('name');
    $type = $columnMap('type');
    $size = $columnMap('size');
    if ($field('type') === 'filterable') {
            $this->resource->getIdxName($tableName, $name, AdapterInterface::INDEX_TYPE_INDEX),
            ('type' => AdapterInterface::INDEX_TYPE_INDEX)
    $table->addColumn($name, $type, $size);

The last line is the question. $options It is not even passed in this function, so there is no way to define it.

My question is: how to define the flat column specification to use when rebuilding the client flat table?