为什么以及如何在 Git 提交中将术语原子用于数据库的 ACID 属性或原子操作?
Why and how is the term atomic used for ACID properties of database or atomic operations in Git commit?
原子操作意味着:要么全部成功,要么失败而没有任何变化。他们不会在两者之间失败。
这个 meaning/context 和 "atomic" 这个词有什么关系?
您所有的更改和所有更改的文件都会进入提交,然后提交将作为一个整体添加到历史记录中。如果有一个失败,整个提交操作都会失败,这意味着 none 的更改和 none 的文件被添加到任何可能的提交中;未向修订历史添加任何内容。
顺便说一句,您在哪里阅读有关原子 git 操作的信息?
关于它如何是原子的——我不能肯定地说,我可能是在胡说八道,但文件系统(ntfs 和 ext3)通常是事务性的并支持原子磁盘操作。每个提交都会对其所有内容(下面的树和 blob)进行哈希处理。然后,git 管道可以查看 .git/objects 并找到该哈希。如果哈希在那里,它将失败。如果哈希槽为空,它可以继续使用底层文件系统来提供事务和原子保证。
"Atomic" 来自 "indivisible" 的拉丁词,因此原子操作是那些(据说)不可分割的操作。你要么得到全部,要么 none。 部分的操作不可能发生,至少就系统的未来状态而言不会。
原子操作意味着:要么全部成功,要么失败而没有任何变化。他们不会在两者之间失败。 这个 meaning/context 和 "atomic" 这个词有什么关系?
您所有的更改和所有更改的文件都会进入提交,然后提交将作为一个整体添加到历史记录中。如果有一个失败,整个提交操作都会失败,这意味着 none 的更改和 none 的文件被添加到任何可能的提交中;未向修订历史添加任何内容。
顺便说一句,您在哪里阅读有关原子 git 操作的信息?
关于它如何是原子的——我不能肯定地说,我可能是在胡说八道,但文件系统(ntfs 和 ext3)通常是事务性的并支持原子磁盘操作。每个提交都会对其所有内容(下面的树和 blob)进行哈希处理。然后,git 管道可以查看 .git/objects 并找到该哈希。如果哈希在那里,它将失败。如果哈希槽为空,它可以继续使用底层文件系统来提供事务和原子保证。
"Atomic" 来自 "indivisible" 的拉丁词,因此原子操作是那些(据说)不可分割的操作。你要么得到全部,要么 none。 部分的操作不可能发生,至少就系统的未来状态而言不会。