• M
    gitk: Synchronize config file writes · eaf7e835
    Max Kirillov 提交于
    If several gitk instances are closed simultaneously, the savestuff
    procedure can run at the same time, resulting in a conflict which may
    cause losing of some of the instance's changes, failing the saving
    operation or even corrupting the configuration file. This can happen,
    for example, at user session closing, or at group closing of all
    instances of an application which is possible in some desktop
    environments.
    
    To avoid this, make sure that only one saving operation is in
    progress.  It is guarded by existence of the $config_file_tmp
    file. Creating the file and moving it to $config_file are both atomic
    operations, so it should be reliable.
    
    Reading does not need to be syncronized, because moving is an atomic
    operation, and the $config_file always refers to a full and correct file.
    But, if there is a stale $config_file_tmp file, report it at gitk start.
    If such file is detected when saving, just report it abort the save, as
    for other errors in saving.
    Signed-off-by: NMax Kirillov <max@max630.net>
    Signed-off-by: NPaul Mackerras <paulus@samba.org>
    eaf7e835
gitk 338.4 KB