I am developing an Umnraco project, which obviously includes the Umbraco sdf database file.
Currently this sdf file is part of my git repository (I assume it must be there).
The problem is that I want to keep developing my Umbraco project, and deploy it to a site where my client can change its content. So if I'm developing and changing the sdf file accordingly, and my client does so as well, I can have some conflicts between the two versions of the sdf file.
How should I handle it? How should my sdf file be part of my project? How can I develop on one side, and let the client to "develop" on the other, with having any conflicts?
Usually what I do is to NOT use the SDF file (SQL CE) and instead use localdb or a local database. Which wouldn't be version controlled.
Then I use uSync to sync my propertys and such to disc. These files will be version-controlled and automatically adds it to a database on startup.
If I want to install the site on a new database, I'll just empty the connectionstring and the UmbracoVersion-property. What'll happen on startup is that the install wizard will start, update the database to the right version and then uSync will add the necessary data propertys etc.
I think the procedure would be pretty much the same except that I would have two different databases, one for developing locally and then one in production.
When publishing I wouldn't move any databases, just let the application connect to the production one instead, and let uSync add my document types and data properties etc.
To add to the comments above, if you are going to use usync, make sure you understand that deletes are not tracked by default, so if that is important you will need to adjust the usync backoffice configuration.
We also use the SSDT to create a database project and track/version control the schema.
We do, typically keep a snapshot of the database right before a release in version control just in case we end up missing something; so far so good though.
So now I am using uSync. I have the clients database, and my developer database. These are not git tracked.
But I have this strange issue. The client changed the content of a simple text-input in a certain page. I can see that these changes were tracked by git - the App_Data\umbraco.config file was changed. Then, I committed these changes and merged them to the branch I am working on. I can see that the App_Data\umbraco.config has changed as expected, and when I browse the page on my local machine, the change is there. But, when I log in to the Umbraco management console, and got to "Content" for changing this page content again, the change is not there. How come the umbraco.config has the change, the browser displays the change, but when in my Umbraco console the change is not there?
It seems like Umbraco Backend uses data from Database, and Umbraco frontend shows data from App_Data\umbraco.config. Anyways, if the CMS content itself is saved only in DB, and uSync does not sync it - how can I still sync it between two different environments?
AFAIK, App_Data\umbraco.config is a sort of file cache generated from the DB when publishing. The frontend of the site reads from umbraco.config and the backoffice reads from the DB and when any changes are made in the content the umbraco.config is rewritten.
Are you using uSync.ContentEdition to sync content? I never sync content but I don't think uSync.ContentEdition uses umbraco.config for the import, and the umbraco.config should not be in version control as it's just a snapshot of the latest content structure in the DB.
Maintaining Umbraco database file in git
Hi,
I am developing an Umnraco project, which obviously includes the Umbraco sdf database file. Currently this sdf file is part of my git repository (I assume it must be there). The problem is that I want to keep developing my Umbraco project, and deploy it to a site where my client can change its content. So if I'm developing and changing the sdf file accordingly, and my client does so as well, I can have some conflicts between the two versions of the sdf file.
How should I handle it? How should my sdf file be part of my project? How can I develop on one side, and let the client to "develop" on the other, with having any conflicts?
Cheers
Usually what I do is to NOT use the SDF file (SQL CE) and instead use localdb or a local database. Which wouldn't be version controlled.
Then I use uSync to sync my propertys and such to disc. These files will be version-controlled and automatically adds it to a database on startup.
If I want to install the site on a new database, I'll just empty the connectionstring and the UmbracoVersion-property. What'll happen on startup is that the install wizard will start, update the database to the right version and then uSync will add the necessary data propertys etc.
Good luck!
Thanks Alex. What if I cannot use something different than the sdf file?
Cheers
I think the procedure would be pretty much the same except that I would have two different databases, one for developing locally and then one in production.
When publishing I wouldn't move any databases, just let the application connect to the production one instead, and let uSync add my document types and data properties etc.
To add to the comments above, if you are going to use usync, make sure you understand that deletes are not tracked by default, so if that is important you will need to adjust the usync backoffice configuration.
We also use the SSDT to create a database project and track/version control the schema.
We do, typically keep a snapshot of the database right before a release in version control just in case we end up missing something; so far so good though.
So now I am using uSync. I have the clients database, and my developer database. These are not git tracked. But I have this strange issue. The client changed the content of a simple text-input in a certain page. I can see that these changes were tracked by git - the
App_Data\umbraco.config
file was changed. Then, I committed these changes and merged them to the branch I am working on. I can see that theApp_Data\umbraco.config
has changed as expected, and when I browse the page on my local machine, the change is there. But, when I log in to the Umbraco management console, and got to "Content" for changing this page content again, the change is not there. How come theumbraco.config
has the change, the browser displays the change, but when in my Umbraco console the change is not there?It seems like Umbraco Backend uses data from Database, and Umbraco frontend shows data from
App_Data\umbraco.config
. Anyways, if the CMS content itself is saved only in DB, and uSync does not sync it - how can I still sync it between two different environments?Thanks!
Hi Eli,
AFAIK, App_Data\umbraco.config is a sort of file cache generated from the DB when publishing. The frontend of the site reads from umbraco.config and the backoffice reads from the DB and when any changes are made in the content the umbraco.config is rewritten.
Are you using uSync.ContentEdition to sync content? I never sync content but I don't think uSync.ContentEdition uses umbraco.config for the import, and the umbraco.config should not be in version control as it's just a snapshot of the latest content structure in the DB.
Regards, Magnus
App_Data\umbraco.config should not be stored in version control - as Magnus mentioned below it is a cache file from the content of the database
What are your usync settings? Do you import changes automatically? Maybe you just need to click the import button on the usync dashboard?
Also remember, the last change on the page wins, so if your client changed it, and then you changed it... your change supercedes the clients change
is working on a reply...