How do updates, upgrades and patches work

Hello,
I have few questions on how updates, upgrades and patches work.

  1. If i have a change of logic in a controller file .py, Does the update/upgrade scripts look if the file has changed and replace it.
  2. If i have a new .json file, does the scrip look for new file and does a create table
  3. if i have a change in a table column, does the script detect a change in the .json file and does an update
  4. Is there a stop of processes when a update/upgrade is run.

Is it a diff between my current local files and the files in the latest pull, Or is it a full sweep overriding of files.
Pls let me know.

The update process doesn’t go through unless all the changes made by you are undone.

Yes, this works only in case of DocTypes

Yes

Yes, try accessing your system while update is running.

Overriding doesn’t happen. You will have to manually undo the changes.

Thanks for the responses @netchampfaris

One last question.

If i am on erpnext-9 (no local changes). So my issue.py is ver 9. Now i upgrade to erpnext-10. And there were changes in issue.py, so its ver10 on the remote. How does the upgrade script know there is a change, does it use a git command, or timestamp, or some versioning. There may be a customer.py same in both ver9 and ver10, so no update of this file will be required.

System does a git pull before update. If you have local changes you have to merge it.

Best not to make local changes, unless you plan to send a contribution!

ok. Since .py files doesnt have to do with db insert/update, just pulling the latest will do the job. Will be executed when required.
Thanks @rmehta and @netchampfaris