|
#!/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
|