Wouldn't it being refused by existing bitcoin clients if new node's client's source is different with them?
That depends on the difference.
Usually a software update (or source code revision, as you put it), won't change the way these nodes talk to each other (ie. the protocol). In most cases such an update will also not change what a node or client accepts as a valid transaction.
Only when parts of the protocol or transaction validation get changed in a way that is incompatible with other nodes, they either refuse to connect with each other or disagree about the state of the network -- that is, which transactions are valid and subsequently who has paid how much to whom. The latter usually leads to what is known as a hardfork.
In other words, as long as the nodes share a common language, meaning a compatible protocol, they will cooperate. Otherwise you wouldn't be able to send coins between the countless wallet implementations (eg. Bitcoin Core, Electrum, MyCelium, Trezor...) we see today.