We have a DRUSH CEX set under config/sync folder. Our 2 developer are working on the same project. Now here's the situation
Dev 1 ran drush cex and his config was exported
Dev 2 had a few changes in the CMS but didn't run drush cex
Dev 1 push his config export to git repository
Dev 2 pulled the changes from the git
Dev 2 tried running drush cim but it won't let him because it will overwrite whatever he have in the local and it will be lost.
Dev 2 tried to backup the config by running drush cex but it will then override whatever is in the GIT REPOSITORY. Meaning changes of Dev 1 will be overwritten by Dev 2 changes.
Now question is how can we go around this? We want both dev to have all their changes committed at the same time imported to the cms. But we can't fix this.
Can anyone please help us on the proper work flow of drush please
Can happen yes but only occasionally if two devs happen to work on the same config files.
Approach 1: Dev 2 exports config before pull and manually resolves later merge conflicts before config import
So before Dev 2 pulls the changes they first need to export config. Then pull. Then resolve any merge conflicts. And only now import configs.
Approach 2: Dev 2 exports config after pull and manually git resets unrelated changes before config import again
Alternatively Dev 2 exports config after pull and git resets everything that's not related to the feature they are currently working on (that's best practice anyways). And now imports config again.
Related
I know the export and import option is available but I have 5 environments, So each and every time after implementing new things on dev env I don't want to do export and import on other envs instead using pipeline I will execute the drush commands to implement the required changes on other envs by executing required Drush commands.
The problem is that on Drupal the config import/export is the best way to do that.
The config export doesn't not only export content type configuration, but the entire website configuration.
So thoses commands help you be iso between environments.
If your probleme is about ouverriding some config values between environments, the module Config Split can help you on it.
With no config import, I would solve it with installing a module of your own, which runs your special code.
Steps:
Create a module my_custom_contenttype
Make a hook_install() (my_custom_contenttype_install())
Run this drush command (uninstall before, if you want to install it again - do it more than one time):
drush pm:uninstall my_custom_contenttype; drush pm:enable my_custom_contenttype;
function my_custom_contenttype_install(){
// Add content type if it not exist
};
You could do this using manually-managed configuration. Either by:
Creating a custom module and including your configurations in custom_module/config/install, and using "drush en" to install the module
OR
By using an existing custom module and using a post_update hook to install the configuration.
We do this on a number of sites, and loading and installing the configurations is just complex enough that we built a helper module to do it. You can pull this module in with composer and use update hooks to activate it, or you can look at the installConfig function here and use it a as a template. (the module has a helpful readme, too).
I'm having issues getting some modules to install. I've been able to get mod-1v1-arena and mod-npc-free-professions working, but I haven't been able to get these other modules to work:
mod-new-character-perks
mod-learn-spells
mod-quick-teleport
Can someone please confirm I have the correct workflow, or advise on what steps I'm missing.
Clone module folder from git to .\azerothcore-wotlk\modules
Run Git CLI: ./acore.sh docker build
Copy mod_learnspells.conf to .\azerothcore-wotlk\env\docker\etc\modules
I see instructions about rebuilding with CMake, is that necessary if I'm using docker build...? I tried CMake too and I got an error immediately with the software setup, so haven't pursued it further.
I'm also a bit confused by the .conf files, which folder does the server read them from?
.\azerothcore-wotlk\env\docker\etc\modules or .\azerothcore-wotlk\modules\mod-learn-spells\conf
I would try to install without any modules to check for the core stability and then work up from there one by one.
This way, if there's a module that's currently not working due to recent PR's like the Autobalance and possibly mod-learn-spells you can report an issue and work without it until It's back up.
AzerothCore Continuous Integration build with modules is currently failing aswell if you check the Readme notes where it says
I've installed Bootstrap 4 Instant Theme on my dev machine, which has DNN installed. I can get the theme up OK.
I've installed Node.js and that looks OK.
I've run npm ci in the app/theme folder, and that seems to have run OK. There is a webpack.config.js file in the folder.
I don't get the "run webpack" instruction!
When I make changes to the _variables.scss file and save and then refresh my page, I don't get the theme updates.
The Client Resource Management was already disabled.
I've cleared the cache and restarted the application.
What am I missing, or what is missing from the documentation that it assumes I know?
Just to be sure: did you compile the scss? As Bootstrap 4 uses SASS, the scss need to be compiled in order to take effect.
Try
npx webpack --config webpack.config.js
cmd is enough to run the command. I use a .bat with this to quick compile.
run npm run webpack from commandline.
I have extended the instructions and explained the step better. I hope you were able to move on by now.
João Gomes, thx for your quick answer =)
I am developing a web application with Symfony 2. The code of my own bundle that forms the heart of my application and some configurations files for application-wide settings are controlled by Git (mostly the directories, src/MyCompany/MyBundle, app/Resources/config, etc.) The rest is under control of Composer (the framework, 3rd party bundles, etc.)
Up to now, I ran a ./composer self-update && ./composer.phar update once in a while, pushed or fetched source code from the origin of my repository and everything has been working well.
Today, I started a new fresh working directory and experienced some odd problems.
I performed
git clone <my git repo url> www
cd www
composer.phar install
The composer.json is part of my repository, hence it normally suffices to excute Composer in order to install the framework and all required bundles to get a fully working copy of my web application.
But today, composer.phar install stopped prematurely complainig about missing files. Luckily, I still had my old working directory, so I could copy over the missing files manually, and restart composer.phar. I had to repeat these steps several times until I ended with a fully working application.
The files that were missing are
app/console
AutoLoader.php
app_dev.php
AppCache.php
I thought that these files are part of the Symfony framework and expected them to be installed by Composer. Fot this reason they are not under control of my revision control system.
I found this related question. The answer is very generic und not particularly helpful. All it says is that for example app/console should be included into revision control, because it is not installed by Composer (any longer) and that there is a change in the directory structure due to the transition from Symfony 2 to 3. But I know for sure that app/console was installed by Composer in the past. Hence, something changed.
This leads me to the following questions
Is there any complete, up-to-date and official documentation
what should be included in the repository
what should be in .gitignore
what is managed by Composer?
Is there any documentation how to do the transistion from the old directory structure to the new one in preperation of Symfony 3?
I thought I read all README.md, all release information and everything in "Living on the Edge" of the Symfony site, but somehow I missed this.
The clean way to install Symfony2 from scratch with composer, is to use the following command:
composer create-project symfony/framework-standard-edition my_project_name
This will ensure that all basic structures are created. After that, you can still insert your customisations from the previous project.
Then you can add everything – except app/config/parameters.yml as well as the contents of vendor/, app/cache and app/logs – to your repository.
About transitioning to SF3, I guess there’ll be an upgrade path as soon as SF3 is stable enough to create such a document.
1.1. that depends how you want people to be able to fetch your bundle
1.2. I share with you my own .gitignore: beware I use git for my own use to have a security for my files, not to allow people to get my bundle:
# Cache and logs (Symfony2)
/app/cache/*
/app/logs/*
!app/cache/.gitkeep
!app/logs/.gitkeep
# Cache and logs (Symfony3)
/var/cache/*
/var/logs/*
!var/cache/.gitkeep
!var/logs/.gitkeep
# Parameters
/app/config/parameters.yml
/app/config/parameters.ini
# Managed by Composer
/app/bootstrap.php.cache
/var/bootstrap.php.cache
/bin/*
!bin/console
!bin/symfony_requirements
/vendor/
# Assets and user uploads
/web/bundles/
/web/uploads/
# PHPUnit
/app/phpunit.xml
/phpunit.xml
# Build data
/build/
# Composer PHAR
1.3. everything that is in composer.json
I am working with a community-developed OpenShift cartridge for nginx. The cartridge's build script (without any modifications) works well; it starts the nginx server with the configuration file that I provide it. However, I am trying to modify the build script so that it first changes directory into my OpenShift repository, runs npm install and then grunt build to build an Angular application that I have created.
When I do this, I continuously get the error EACCES, mkdir '/var/lib/openshift/xxxxxxxxxx/.npm' when the script gets to npm install. Some OpenShift forum posts have attempted to solve the issue, but it appears as though a different solution is required (at least in my case).
Thus, I am interested in whether or not it is possible to use npm in this way, or if I need to create a cartridge that does all of this myself.
Since we do not typically have the access required to create ~/.npm, we have to find ways of moving the npm cache (normally ~/.npm) and the npm user configuration (normally ~/.npmrc) to accessible folders to get things going. The following information comes partially from a bug report that I submitted to Redhat on this matter.
We must begin by creating an environmental variable to control the location of .npmrc. I created a file (with shell access to my application) called .env in $OPENSHIFT_DATA_DIR. Within this file, I have placed:
export NPM_CONFIG_USERCONFIG=$OPENSHIFT_HOMEDIR/app-root/build-dependencies/.npmrc
This moves the .npmrc directory to a place where we have the privileges to read/write. Naturally, I have to also create the directory .npmrc in $OPENSHIFT_HOMEDIR/app-root/build-dependencies/. Then, in my pre-start webhook/early in my build script, I have placed:
touch $OPENSHIFT_DATA_DIR/.env
This ensures that the environmental variable that configures the location of .npmrc will be accessible each time we deploy/build. Now we can move the location of the npm cache. Start by running touch on the .env file manually, and create the .npm directory in $OPENSHIFT_HOMEDIR/app-root/build-dependencies/. Run the following to complete the reconfiguration:
npm config set cache $OPENSHIFT_HOMEDIR/app-root/build-dependencies/.npm
NPM should now be accessible each time we deploy, even if we are not using the NodeJS cartridge. The above directory choices may be changed as desired.
You do not have write access to the ~/.npm directory in your gear. You might try reviewing how the native node.js cartridge is setup (https://github.com/openshift/origin-server/tree/master/cartridges/openshift-origin-cartridge-nodejs) and see if you can apply it to your custom cartridge.