User Tools

Site Tools


windows:hgsync

This is an old revision of the document!


Mercurial Sync Script

hgsync_login.cmd

hgsync_login.cmd
@echo off
 
set LOCAL_REPO="%USERPROFILE%\Documents"
set REMOTE_REPO="h:\Documents"
set SSH_REPO="ssh://%USERNAME%@sfs/Documents"
set PATH=C:\Progra~1\Mercurial;C:\Windows\System32\OpenSSH;
 
If exist "%LOCAL_REPO%\.hg" (
    If exist "%REMOTE_REPO%\.hg" (
		goto Remoteandlocal
	) else (
		goto onlylocal
	)
) else If exist "%REMOTE_REPO%\.hg" (
    goto onlyremote
) else If exist "%LOCAL_REPO%\.hg" (
	goto onlylocal
) else (
	goto missingonboth
)
 
goto end

 
:Remoteandlocal
Echo File exist remote and local
c:
cd %LOCAL_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg pull  %REMOTE_REPO%
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push  %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
c:
cd %LOCAL_REPO%
hg pull  %REMOTE_REPO%
hg update
goto END

:onlylocal
Echo File exist only local
mkdir %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg init
c:
cd %LOCAL_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg push  %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote merge update from %COMPUTERNAME%"
c:
cd %LOCAL_REPO%
hg pull  %REMOTE_REPO%
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg update
goto END

:onlyremote
Echo File exist only remote
c:
cd %LOCAL_REPO%
hg init
hg pull  %REMOTE_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg update
goto END

:missingonboth
Echo missing on both
mkdir %LOCAL_REPO%
C:
cd %LOCAL_REPO%
hg init
mkdir %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg init
c:
cd %LOCAL_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote merge update from %COMPUTERNAME%"
c:
cd %LOCAL_REPO%
hg pull  %REMOTE_REPO%
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg update
goto END

:END
echo done

hgsync_logout.cmd

hgsync_logout.cmd
@echo off
set LOCAL_REPO="%USERPROFILE%\Documents"
set REMOTE_REPO="h:\Documents"
set PATH=C:\Progra~1\Mercurial;C:\Windows\System32\OpenSSH;
 
If exist "%LOCAL_REPO%\.hg" (
    If exist "%REMOTE_REPO%\.hg" (
		goto Remoteandlocal
	) else (
		goto onlylocal
	)
) else If exist "%REMOTE_REPO%\.hg" (
    goto onlyremote
) else If exist "%LOCAL_REPO%\.hg" (
	goto onlylocal
) else (
	goto missingonboth
)

 
 
 
:Remoteandlocal
Echo File exist remote and local
c:
cd %LOCAL_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg pull  %REMOTE_REPO%
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push  %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
c:
cd %LOCAL_REPO%
hg pull  %REMOTE_REPO%
hg update
goto END

:onlylocal
Echo File exist only local
mkdir %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg init
c:
cd %LOCAL_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg push  %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote merge update from %COMPUTERNAME%"
c:
cd %LOCAL_REPO%
hg pull  %REMOTE_REPO%
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg update
goto END

:onlyremote
Echo File exist only remote
c:
cd %LOCAL_REPO%
hg init
hg pull  %REMOTE_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg update
goto END

:missingonboth
Echo missing on both
mkdir %LOCAL_REPO%
C:
cd %LOCAL_REPO%
hg init
mkdir %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg init
c:
cd %LOCAL_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
H:
cd %REMOTE_REPO%
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote update from %COMPUTERNAME%"
hg merge -t "W:\scripts\merge.bat"
hg resolve -t internal:other --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "remote merge update from %COMPUTERNAME%"
c:
cd %LOCAL_REPO%
hg pull  %REMOTE_REPO%
hg merge -t "W:\scripts\merge_other.bat"
hg resolve -t internal:local --all
hg update
hg addremove
hg --config ui.username=%USERNAME% commit -m "merge update from %COMPUTERNAME%"
hg push %REMOTE_REPO%
h:
cd %REMOTE_REPO%
hg update
goto END

:END
echo done
windows/hgsync.1634758721.txt.gz · Last modified: 2021/10/20 14:38 by tschulz