Skip to content

Fix reference transactions with RPCs which encode timestamps into generated data

Some RPCs use the current system time to generate commits, like e.g. when creating merges or doing rebases. This causes us to generate commits which not only depend on the input parameters, but also on external parameters like the system time. This breaks transactions as the likelihood that we generate the same commit hash across all members of the transaction is quite low.

One possible fix is to have the client pass in a timestamp as parameter which then gets used by all Gitalies. RPCs which are probably affected include:

  • UserMergeBranch
  • UserMergeToRef
  • UserRebaseConfirmable
  • UserCreateTag
  • UserCherryPick
  • UserCommitFiles
  • UserRevert
  • UserSquash
  • UserApplyPatch
  • UserUpdateSubmodule
  • ResolveConflicts
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information