| 
#!/bin/bash
 | 
 | 
# Teste de desempenho entre Subversion, Git e Mercurial
 | 
 | 
 | 
 | 
# Real, User, Sys
 | 
 | 
TIMEFORMAT=" %R, %U, %S"
 | 
 | 
 | 
 | 
function mede {
 | 
 | 
    echo $1 | cut -f 2 -d ' ' | tr '\n' ','
 | 
 | 
    time $1 1> /dev/null 2>&1
 | 
 | 
}
 | 
 | 
 | 
 | 
function alteracoes {
 | 
 | 
    case "$1" in
 | 
 | 
        1)
 | 
 | 
            for comando in 'add' 'commit' 'merge' 'log' 'rebase' 'diff' 'pull'; do
 | 
 | 
                # texto do git foi escolhido por ser mais extenso
 | 
 | 
                (git help $comando) > $comando.txt
 | 
 | 
            done
 | 
 | 
            ;;
 | 
 | 
 | 
 | 
        2)
 | 
 | 
            sed -i 's/edit hello.c/nano ola_mundo.py/g' commit.txt
 | 
 | 
            sed -i 's/log/nhem-nhem-nhem/g' log.txt
 | 
 | 
            sed -i 's/pull/nhem-nhem-nhem/g' pull.txt
 | 
 | 
            ;;
 | 
 | 
 | 
 | 
        3)
 | 
 | 
            git help rebase >> log.txt
 | 
 | 
            sed -i 's/commit/blablabla/g' commit.txt
 | 
 | 
            sed -i 's/diff/blablabla/g' diff.txt
 | 
 | 
            ;;
 | 
 | 
    esac
 | 
 | 
}
 | 
 | 
 | 
 | 
 | 
 | 
#
 | 
 | 
# Subversion
 | 
 | 
#
 | 
 | 
 | 
 | 
echo '-----------------------------'
 | 
 | 
svn --version | grep '\bversion'
 | 
 | 
echo '-----------------------------'
 | 
 | 
echo 'comando, real, user, sys'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
if [ -d "svn-repos" ]; then
 | 
 | 
    rm -rf svn-repos
 | 
 | 
fi
 | 
 | 
if [ -d "svn-1" ]; then
 | 
 | 
    rm -rf svn-1
 | 
 | 
fi
 | 
 | 
if [ -d "svn-2" ]; then
 | 
 | 
    rm -rf svn-2
 | 
 | 
fi
 | 
 | 
 | 
 | 
mede 'svnadmin create svn-repos'
 | 
 | 
mede 'svn mkdir file:///tmp/svn-repos/trunk file:///tmp/svn-repos/branches file:///tmp/svn-repos/tags -m estrutura_inicial'
 | 
 | 
mede 'svn checkout file:///tmp/svn-repos/trunk svn-1'
 | 
 | 
 | 
 | 
cd /tmp/svn-1
 | 
 | 
alteracoes 1
 | 
 | 
 | 
 | 
mede 'svn add *'
 | 
 | 
mede 'svn commit -m adicao'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
mede 'svn checkout file:///tmp/svn-repos/trunk svn-2'
 | 
 | 
 | 
 | 
cd /tmp/svn-1
 | 
 | 
alteracoes 2
 | 
 | 
 | 
 | 
mede 'svn diff'
 | 
 | 
mede 'svn status'
 | 
 | 
mede 'svn commit -m blablabla'
 | 
 | 
 | 
 | 
cd /tmp/svn-2
 | 
 | 
alteracoes 3
 | 
 | 
 | 
 | 
mede 'svn diff'
 | 
 | 
mede 'svn status'
 | 
 | 
mede 'svn update'
 | 
 | 
mede 'svn commit -m ola_mundo_nhem-nhem-nhem'
 | 
 | 
mede 'svn log'
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
#
 | 
 | 
# Mercurial
 | 
 | 
#
 | 
 | 
 | 
 | 
echo
 | 
 | 
echo '-----------------------------------------'
 | 
 | 
hg version | grep vers
 | 
 | 
echo '-----------------------------------------'
 | 
 | 
echo 'comando, real, user, sys'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
if [ -d "hg-1" ]; then
 | 
 | 
    rm -rf hg-1
 | 
 | 
fi
 | 
 | 
if [ -d "hg-2" ]; then
 | 
 | 
    rm -rf hg-2
 | 
 | 
fi
 | 
 | 
 | 
 | 
mede 'hg init hg-1'
 | 
 | 
 | 
 | 
cd /tmp/hg-1
 | 
 | 
alteracoes 1
 | 
 | 
mede 'hg add'
 | 
 | 
mede 'hg commit -m adicao -u teste'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
mede 'hg clone hg-1 hg-2'
 | 
 | 
 | 
 | 
cd /tmp/hg-1
 | 
 | 
alteracoes 2
 | 
 | 
 | 
 | 
mede 'hg diff'
 | 
 | 
mede 'hg status'
 | 
 | 
mede 'hg commit -m blablabla -u teste'
 | 
 | 
 | 
 | 
cd /tmp/hg-2
 | 
 | 
alteracoes 3
 | 
 | 
 | 
 | 
mede 'hg diff'
 | 
 | 
mede 'hg status'
 | 
 | 
mede 'hg commit -m ola_mundo_nhem-nhem-nhem -u teste'
 | 
 | 
mede 'hg pull'
 | 
 | 
# Na instalação do TortoiseHg, o arquivo /etc/mercurial/hgrc.d/thgmergetools.rc
 | 
 | 
# desconfigura o padrão original de premerge=True das ferramentas e isto atrasa o merge.
 | 
 | 
# Uma forma de desfazer isto é sobrescrever a configuração durante o comando:
 | 
 | 
mede 'hg merge --config merge-tools.kdiff3.premerge=True --config ui.merge=kdiff3'
 | 
 | 
mede 'hg commit -m merge -u teste'
 | 
 | 
mede 'hg log'
 | 
 | 
mede 'hg push'
 | 
 | 
 | 
 | 
 | 
 | 
#
 | 
 | 
# Mercurial com chg
 | 
 | 
#
 | 
 | 
 | 
 | 
echo
 | 
 | 
echo '-----------------------------------------'
 | 
 | 
chg version | grep vers
 | 
 | 
echo 'usando chg'
 | 
 | 
echo '-----------------------------------------'
 | 
 | 
echo 'comando, real, user, sys'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
if [ -d "chg-1" ]; then
 | 
 | 
    rm -rf chg-1
 | 
 | 
fi
 | 
 | 
if [ -d "chg-2" ]; then
 | 
 | 
    rm -rf chg-2
 | 
 | 
fi
 | 
 | 
 | 
 | 
mede 'chg init chg-1'
 | 
 | 
 | 
 | 
cd /tmp/chg-1
 | 
 | 
alteracoes 1
 | 
 | 
mede 'chg add'
 | 
 | 
mede 'chg commit -m adicao -u teste'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
mede 'chg clone chg-1 chg-2'
 | 
 | 
 | 
 | 
cd /tmp/chg-1
 | 
 | 
alteracoes 2
 | 
 | 
 | 
 | 
mede 'chg diff'
 | 
 | 
mede 'chg status'
 | 
 | 
mede 'chg commit -m blablabla -u teste'
 | 
 | 
 | 
 | 
cd /tmp/chg-2
 | 
 | 
alteracoes 3
 | 
 | 
 | 
 | 
mede 'chg diff'
 | 
 | 
mede 'chg status'
 | 
 | 
mede 'chg commit -m ola_mundo_nhem-nhem-nhem -u teste'
 | 
 | 
mede 'chg pull'
 | 
 | 
# Na instalação do Tortoisechg, o arquivo /etc/mercurial/chgrc.d/tchgmergetools.rc
 | 
 | 
# desconfigura o padrão original de premerge=True das ferramentas e isto atrasa o merge.
 | 
 | 
# Uma forma de desfazer isto é sobrescrever a configuração durante o comando:
 | 
 | 
mede 'chg merge --config merge-tools.kdiff3.premerge=True --config ui.merge=kdiff3'
 | 
 | 
mede 'chg commit -m merge -u teste'
 | 
 | 
mede 'chg log'
 | 
 | 
mede 'chg push'
 | 
 | 
 | 
 | 
 | 
 | 
#
 | 
 | 
# Git
 | 
 | 
#
 | 
 | 
 | 
 | 
echo -e '\n-------------------'
 | 
 | 
git version
 | 
 | 
echo '-------------------'
 | 
 | 
echo 'comando, real, user, sys'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
if [ -d "git-1" ]; then
 | 
 | 
    rm -rf git-1
 | 
 | 
fi
 | 
 | 
if [ -d "git-2" ]; then
 | 
 | 
    rm -rf git-2
 | 
 | 
fi
 | 
 | 
 | 
 | 
 | 
 | 
mede 'git init git-1'
 | 
 | 
 | 
 | 
cd /tmp/git-1
 | 
 | 
alteracoes 1
 | 
 | 
 | 
 | 
mede 'git add .'
 | 
 | 
mede 'git commit -m adicao'
 | 
 | 
 | 
 | 
cd /tmp
 | 
 | 
mede 'git clone git-1 git-2'
 | 
 | 
 | 
 | 
cd /tmp/git-1
 | 
 | 
alteracoes 2
 | 
 | 
 | 
 | 
mede 'git diff'
 | 
 | 
mede 'git status'
 | 
 | 
mede 'git commit -a -m blablabla'
 | 
 | 
 | 
 | 
cd /tmp/git-2
 | 
 | 
mede 'git checkout -b ola_mundo'
 | 
 | 
alteracoes 3
 | 
 | 
 | 
 | 
mede 'git diff'
 | 
 | 
mede 'git status'
 | 
 | 
mede 'git commit -a -m ola_mundo_nhem-nhem-nhem'
 | 
 | 
mede 'git fetch'
 | 
 | 
mede 'git merge origin/master --no-commit'
 | 
 | 
mede 'git commit -a -m merge'
 | 
 | 
mede 'git log'
 | 
 | 
mede 'git push origin HEAD'
 | 
 | 
 | 
 | 
LANGUAGE=$old_language
 |