Answers.Body: <p>It's really bad idea to customize CiviCRM core files when you can do thing using extensions. If you feel your customization fixes core issues than you should try to submit pull request against <a href="https://github.com/civicrm/civicrm-core/" rel="nofollow noreferrer">civicrm-core</a>. If your changes are client specific than you can either move those files into custom php or custom template(again bad idea since its very difficult to maintain for future upgrade) or implement JS/hooks. There are many <a href="https://docs.civicrm.org/dev/en/latest/hooks/list/" rel="nofollow noreferrer">hooks</a> available in CiviCRM where you can alter the content of website or perform additional function that is missing for example sending emails to group admin when a contact is created or change the content of Thank you page of Contribution or Membership signup or Event registration.</p>
  
  <p>If you want to maintain the versioning of db then I would suggest to create extension and implement install/upgrade hook to create/update/delete custom fields or any settings in this way you can version your extension and can deploy on various instances without any hassle. There are also various migration tools available in CiviCRM which is responsible to migrate custom fields, contact types etc from one instance to another. You can also use them to copy your custom fields over staging or production instances.</p>
  
  <p><a href="https://www.drupal.org/project/civicrm_field_migrate" rel="nofollow noreferrer">https://www.drupal.org/project/civicrm_field_migrate</a>
  <a href="https://github.com/CiviCooP/org.civicoop.configitems" rel="nofollow noreferrer">https://github.com/CiviCooP/org.civicoop.configitems</a>
  <a href="https://github.com/catorghans/net.trinfinity.orgis.mi.dataquality" rel="nofollow noreferrer">https://github.com/catorghans/net.trinfinity.orgis.mi.dataquality</a>
  <a href="https://github.com/xurizaemon/civicrm-configexport" rel="nofollow noreferrer">https://github.com/xurizaemon/civicrm-configexport</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-10-16T11:10:30.933Z
Answers.Text: No sir. I add some custom field in contact (pre-define are Individual organization etc) like Question and answer (dropdown). But I want to push on github and then pull on another machine. But Whatever I changed the value, they all are reflecting in database. And database versioning is not possible for mysql.
Answers.UserDisplayName: Dipak Giri
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-10-16T11:23:58.517Z
Answers.Text: Updated my answer!
Answers.UserDisplayName: Pradeep Nayak
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-10-16T11:31:21.983Z
Answers.Text: I am also changing the permissions of each user. then how can I do that? If this will go in production level and again want to change some fields then data may overwrite.
Answers.UserDisplayName: Dipak Giri
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-10-16T11:36:29.753Z
Answers.Text: Use drupals feature module (https://www.drupal.org/project/features_roles_permissions)
Answers.UserDisplayName: Pradeep Nayak
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-10-16T11:43:04.537Z
Answers.Text: Please come in chat [link](https://chat.stackexchange.com/rooms/84284/discussion-between-pradeep-nayak-and-dipak-giri)
Answers.UserDisplayName: Dipak Giri
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-10-16T10:58:35.943Z
Answers.LastActivityDate: 2018-10-16T11:23:48.937Z
Answers.LastEditDate: 2018-10-16T11:23:48.937Z
Answers.UserDisplayName: Pradeep Nayak
Body: <p>I customized a civicrm. I want to put on github.I cannot maintain a mysql database versioning. How can I do that?</p>
  
Tags: <database><civicrm.settings.php>
Title: How will I maintain versioning of civicrm in github?
ThreadText: # How will I maintain versioning of civicrm in github?
  
  (Asked by: username_0 on 2018-10-16)
  
  I customized a civicrm. I want to put on github.I cannot maintain a mysql database versioning. How can I do that?
  
  **Tags:** database, civicrm.settings.php
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-10-16. Score: 2 | Accepted answer
  
  It's really bad idea to customize CiviCRM core files when you can do thing using extensions. If you feel your customization fixes core issues than you should try to submit pull request against [civicrm-core](https://github.com/civicrm/civicrm-core/). If your changes are client specific than you can either move those files into custom php or custom template(again bad idea since its very difficult to maintain for future upgrade) or implement JS/hooks. There are many [hooks](https://docs.civicrm.org/dev/en/latest/hooks/list/) available in CiviCRM where you can alter the content of website or perform additional function that is missing for example sending emails to group admin when a contact is created or change the content of Thank you page of Contribution or Membership signup or Event registration.
  
  If you want to maintain the versioning of db then I would suggest to create extension and implement install/upgrade hook to create/update/delete custom fields or any settings in this way you can version your extension and can deploy on various instances without any hassle. There are also various migration tools available in CiviCRM which is responsible to migrate custom fields, contact types etc from one instance to another. You can also use them to copy your custom fields over staging or production instances.
  
  <https://www.drupal.org/project/civicrm_field_migrate>
  <https://github.com/CiviCooP/org.civicoop.configitems>
  <https://github.com/catorghans/net.trinfinity.orgis.mi.dataquality>
  <https://github.com/xurizaemon/civicrm-configexport>
  
  > **Comments:**
  > **username_0**: No sir. I add some custom field in contact (pre-define are Individual organization etc) like Question and answer (dropdown). But I want to push on github and then pull on another machine. But Whatever I changed the value, they all are reflecting in database. And database versioning is not possible for mysql.  
  > **username_1**: Updated my answer!  
  > **username_0**: I am also changing the permissions of each user. then how can I do that? If this will go in production level and again want to change some fields then data may overwrite.  
  > **username_1**: Use drupals feature module (https://www.drupal.org/project/features_roles_permissions)  
  > **username_0**: Please come in chat [link](https://chat.stackexchange.com/rooms/84284/discussion-between-username_1-and-username_0-username_0)  
  
  ---
  
  