Merge branch 'master' into assistant

Conflicts:
	Makefile
	debian/copyright
This commit is contained in:
Joey Hess 2012-08-20 16:04:56 -04:00
commit 68f1be8f0a
15 changed files with 481 additions and 22 deletions

1
.gitignore vendored
View file

@ -1,6 +1,7 @@
tmp
test
configure
build-stamp
Build/SysConfig.hs
git-annex
git-annex.1

View file

@ -41,7 +41,8 @@ ifdef VIM
all=fast
endif
all: $(all)
build: $(all)
touch build-stamp
sources: $(sources)
@ -78,7 +79,7 @@ install-docs: docs install-mans
rsync -a --delete html/ $(DESTDIR)$(PREFIX)/share/doc/git-annex/html/; \
fi
install: all install-docs
install: build-stamp install-docs
install -d $(DESTDIR)$(PREFIX)/bin
install $(bins) $(DESTDIR)$(PREFIX)/bin
ln -sf git-annex $(DESTDIR)$(PREFIX)/bin/git-annex-shell
@ -120,7 +121,7 @@ docs: $(mans)
clean:
rm -rf $(GIT_ANNEX_TMP_BUILD_DIR) $(bins) $(mans) test configure *.tix .hpc $(sources) \
doc/.ikiwiki html dist $(clibs)
doc/.ikiwiki html dist $(clibs) build-stamp
sdist: clean $(mans)
./make-sdist.sh

2
debian/copyright vendored
View file

@ -24,7 +24,7 @@ License: BSD-3-clause
Utility/libmounts.c in this package's source, or in
/usr/share/common-licenses/BSD on Debian systems.
Files: doc/logo.png doc/logo_small.png */favicon.ico
Files: doc/logo* */favicon.ico
Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>
2010 Joey Hess <joey@kitenet.net>
License: other

View file

@ -225,6 +225,8 @@ Cisneros, Mike Skoglund, Kristy Carey
* The Git developers, for obvious reasons.
* All of git-annex's early adopters, who turned it from a personal
toy project into something much more, and showed me the interest was there.
* Rsync.net, for providing me a free account so I can make sure git-annex
works well with it.
* Anna and Mark, for the loan of the video camera; as well as the rest of
my family, for your support. Even when I couldn't explain what I was
working on.

View file

@ -0,0 +1,225 @@
What steps will reproduce the problem?
$ git init a.git
Initialized empty Git repository in /var/tmp/git-annex-bug/a.git/.git/
$ cd a.git
$ git annex init a
init a ok
(Recording state in git...)
$ touch Ren$'\351'
$ git annex add Ren$'\351'
add René (checksum...) ok
(Recording state in git...)
$ git ci -m "Added Rene'."
[master (root-commit) a61b796] Added Rene'.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 120000 "Ren\351"
$ cd ..
$ git clone -o a a.git b.git
Cloning into b.git...
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 13 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (1/1), done.
$ cd b.git
$ git annex copy --from=a --fast -v
(merging a/git-annex into git-annex...)
copy René
git-annex: /var/tmp/git-annex-bug/b.git/.git/annex/transfer/download/7c5ee764-e8c6-11e1-b0c5-67c6ec1236d6/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: commitBuffer: invalid argument (invalid character)
failed
(Recording state in git...)
git-annex: copy: 1 failed
What is the expected output? What do you see instead?
Expect that files will be copied, but they are not.
What version of git-annex are you using? On what operating system?
$ echo $LANG
en_US.UTF-8
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.10
Release: 11.10
Codename: oneiric
$ uname -a
Linux pdx-desktop 3.0.0-23-generic #39-Ubuntu SMP Thu Jul 19 19:18:53 UTC 2012 i686 i686 i386 GNU/Linux
$ bash --version
GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.2
$ git annex version
git-annex version: 3.20120807
local repository version: 3
default repository version: 3
supported repository versions: 3
upgrade supported from repository versions: 0 1 2
Please provide any additional information below.
The problem is related to weird characters in file names. In the
above example, the "weird character" is an accented 'e' (entered with
$'\351' in bash and zsh). I am able to add the files with weird
characters in their name to one annex, but I cannot copy them to other
annexes using `git annex copy`.
The above example is a simplification of a real problem I am
experiencing. In my real scenario, the file is not empty. See the
attachment for some variations, including with non-empty
files. UPDATE: I'm not allowed to add attachments. See below.
May be related to these (long-ago fixed) bugs:
http://git-annex.branchable.com/todo/support-non-utf8-locales/
"Attachment": Here are my notes, including more examples:
Programs I'm using:
$ echo $LANG
en_US.UTF-8
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.10
Release: 11.10
Codename: oneiric
$ uname -a
Linux pdx-desktop 3.0.0-23-generic #39-Ubuntu SMP Thu Jul 19 19:18:53 UTC 2012 i686 i686 i386 GNU/Linux
$ bash --version
GNU bash, version 4.2.10(1)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.4.2
$ git annex version
git-annex version: 3.20120807
local repository version: 3
default repository version: 3
supported repository versions: 3
upgrade supported from repository versions: 0 1 2
Simplest way to see problem: one empty file with weird character
(accented e: $'\351') in name:
$ git init a.git
Initialized empty Git repository in /var/tmp/git-annex-bug/a.git/.git/
$ cd a.git
$ git annex init a
init a ok
(Recording state in git...)
$ touch Ren$'\351'
$ git annex add Ren$'\351'
add René (checksum...) ok
(Recording state in git...)
$ git ci -m "Added Rene'."
[master (root-commit) a61b796] Added Rene'.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 120000 "Ren\351"
$ cd ..
$ git clone -o a a.git b.git
Cloning into b.git...
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 13 (delta 1), reused 0 (delta 0)
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (1/1), done.
$ cd b.git
$ git annex copy --from=a --fast -v
(merging a/git-annex into git-annex...)
copy René
git-annex: /var/tmp/git-annex-bug/b.git/.git/annex/transfer/download/7c5ee764-e8c6-11e1-b0c5-67c6ec1236d6/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855: commitBuffer: invalid argument (invalid character)
failed
(Recording state in git...)
git-annex: copy: 1 failed
Problem disappears with two empty files:
$ cd ..
$ git init a2.git
Initialized empty Git repository in /var/tmp/git-annex-bug/a2.git/.git/
$ cd a2.git
$ git annex init a2
init a2 ok
(Recording state in git...)
$ touch Ren$'\351'
$ git annex add Ren$'\351'
add René (checksum...) ok
(Recording state in git...)
$ git ci -m "Add Ren$'\351'."
[master (root-commit) 62ac1c8] Add Ren$'\351'.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 120000 "Ren\351"
$ touch Rene
$ git annex add Rene
add Rene (checksum...) ok
(Recording state in git...)
$ git ci -m "Add Rene."
[master c455523] Add Rene.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 120000 Rene
$ cd ..
$ git clone -o a2 a2.git b2.git
Cloning into b2.git...
done.
$ cd b2.git
$ git annex copy --from=a2 --fast -v
(merging a2/git-annex into git-annex...)
copy Rene (from a2...) ok
(Recording state in git...)
Problem returns with two non-empty files:
$ cd ..
$ git init a4.git
Initialized empty Git repository in /var/tmp/git-annex-bug/a4.git/.git/
$ cd a4.git
$ git annex init a4
init a4 ok
(Recording state in git...)
$ touch Ren$'\351'
$ rm Ren$'\351'
$ ls
$ echo "some content" > Ren$'\351'
$ git annex add Ren$'\351'
add René (checksum...) ok
(Recording state in git...)
$ git ci -m "Add Ren$'\351'."
[master (root-commit) f090d90] Add Ren$'\351'.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 120000 "Ren\351"
$ echo "some other content" > Rene
$ git annex add Rene
add Rene (checksum...) ok
(Recording state in git...)
$ git ci -m "Add Rene."
[master 97c20cd] Add Rene.
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 120000 Rene
$ cd ..
$ git clone -o a4 a4.git b4.git
Cloning into b4.git...
done.
$ cd b4.git
$ git annex copy --from=a4 --fast -v
(merging a4/git-annex into git-annex...)
copy Rene (from a4...) ok
copy René
git-annex: /var/tmp/git-annex-bug/b4.git/.git/annex/transfer/download/a5fcd0d4-e8c8-11e1-bb41-43ce1cb9a9f1/SHA256-s13--1c87b6727f523662df714f06a94ea27fa4d9050c38f4f7712bd4663ffbfdfa01: commitBuffer: invalid argument (invalid character)
failed
(Recording state in git...)
git-annex: copy: 1 failed

View file

@ -0,0 +1,10 @@
What steps will reproduce the problem?
What is the expected output? What do you see instead?
I can reproduce it locally, but don't know what's causing it. The file content is the same, I checked with md5sum and sha512sum. But fsck still thinks the content is different. Are there other factors I could check which fsck looks at? I'm using SHA512E backend.
What version of git-annex are you using? On what operating system?
git-annex version: 3.20120807 Ubuntu 12.04 updated on Aug 20th annex was installed via cabal on Aug 20th, all other packages are from ubuntu.
> What is the error message from fsck? --[[Joey]]

View file

@ -0,0 +1,20 @@
What steps will reproduce the problem?
In the git-annex tree,
$ make
$ sudo make install
What is the expected output? What do you see instead?
One would expect git-annex to be installed in the configured prefix. Unfortunately, make tries to rebuild the "all" target before "install". This fails (presumably) due to incorrect environment state,
ghc -O2 -Wall -ignore-package monads-fd -ignore-package monads-tf -outputdir tmp -IUtility -DWITH_ASSISTANT -DWITH_S3 -DWITH_INOTIFY --make git-annex Utility/libdiskfree.o
Utility/FileSystemEncoding.hs:17:8:
Could not find module `Data.Bits.Utils':
Use -v to see a list of the files searched for.
make: *** [git-annex] Error 1
Removing "all" from the dependencies of "install" allows the process to run to completion, although this is clearly not a satisfactory solution.
> [[fixed|done]] using an ugly stamp file. --[[Joey]]

View file

@ -0,0 +1,13 @@
What steps will reproduce the problem?
Run git annex reinject source dest with a file that has the wrong content and thus a wrong checksum.
What is the expected output? What do you see instead?
The file should stay in it's original location. Currently it's moved to .git/annex/bad with a mangled filename.
What version of git-annex are you using? On what operating system?
git-annex version: 3.20120807
Ubuntu 12.04 updated on Aug 20th
annex was installed via cabal on Aug 20th, all other packages are from ubuntu.

View file

@ -0,0 +1,9 @@
[[!comment format=mdwn
username="http://claimid.com/strager"
ip="173.228.13.253"
subject="comment 1"
date="2012-08-17T15:59:49Z"
content="""
It was fun to have you here! =]
"""]]

View file

@ -0,0 +1,40 @@
As I prepare to dive back into development, now is a good time to review
what I've built so far, and how well I'm keeping up with my planned
[[roadmap|assistant]].
I started working two and a half months ago, so am nearing the end of
the three months I originally asked to be funded for on Kickstarter.
I've built much of what I planned to build in the first three months --
[[inotify]] is done (and kqueue is basically working, but needs scalability
work), local [[syncing]] is done, the [[webapp]] works, and I've built some
of the first [[configurators]]. It's all functional in a narrow use case
involving syncing to removable drives.
[[progressbars]] still need to be dealt with, and network syncing needs to
be revisited soon, so that I can start building easy configurators for
further use cases, like using the cloud, or another machine on the local
network.
I think I'm a little behind my original schedule, but not too bad,
and at the same time, I think I've built things rather more solidly than I
expected them to be at this point. I'm particularly happy with how well
the inotify code works, no matter what is thrown at it, and how nice
the UI in the webapp is shaping up to be.
----
I also need to get started on fulfilling my Kickstarter rewards, and
I was happy to spend some time in the airport working on the main
blocker toward that, a lack of a scalable git-annex logo, which is needed
for printing on swag.
Turns out that inkscape has some amazing bitmap tracing capabilities.
I was able to come up with this scalable logo in short order, it
actually took longer to add back the colors, as the tracer generated a
black and white version.
With that roadblock out of the way, I am moving toward ordering large
quantities of usb drives, etc.
[[logo.svg]]

View file

@ -9,7 +9,7 @@ through setting up common use cases.
* Create a repository (run when the web app is started without a configured
repository too).
* Clone this repo to a USB drive.
* Clone this repo to a USB drive or other removable drive. **done**
* Clone this repo to another host. (Needs [[pairing]])
* Set up Amazon S3.
* Set up rsync remote.

View file

@ -1,6 +1,6 @@
Things that don't fit anywhere else:
* Automatically start daemon on boot or when user logs in.
* Automatically start daemon on boot or when user logs in. **done**
* Somehow get content that is unavailable. This is problematic with inotify,
since we only get an event once the user has tried (and failed) to read
from the file. This is only needed if all the files in the directory

View file

@ -1,27 +1,14 @@
The webapp is a web server that displays a shiny interface.
## security
* Listen only to localhost. **done**
* Instruct the user's web browser to open an url that contains a secret
token. This guards against other users on the same system. **done**
(I would like to avoid passwords or other authentication methods,
it's your local system.)
* Don't pass the url with secret token directly to the web browser,
as that exposes it to `ps`. Instead, write a html file only the user can read,
that redirects to the webapp. **done**
* Alternative for Linux at least would be to write a small program using
GTK+ Webkit, that runs the webapp, and can know what user ran it, avoiding
needing authentication.
## interface
* list of files uploading and downloading **done**
* button to open file browser on repo (`xdg-open $DIR`) **done**
* progress bars for each file (see [[progressbars]])
* drag and drop to reorder
* cancel and pause
* keep it usable w/o javascript, and accessible to blind, etc
* cancel, pause, and resume **done**
* keep it usable w/o javascript **done**
* keep it accessible to blind, etc
## other features
@ -42,3 +29,17 @@ The webapp is a web server that displays a shiny interface.
* record repository that was made, and use it next time run **done**
* write a pid file, to prevent more than one first-start process running
at once **done**
## security **acceptable/done**
* Listen only to localhost. **done**
* Instruct the user's web browser to open an url that contains a secret
token. This guards against other users on the same system. **done**
(I would like to avoid passwords or other authentication methods,
it's your local system.)
* Don't pass the url with secret token directly to the web browser,
as that exposes it to `ps`. Instead, write a html file only the user can read,
that redirects to the webapp. **done**
* Alternative for Linux at least would be to write a small program using
GTK+ Webkit, that runs the webapp, and can know what user ran it, avoiding
needing authentication.

60
doc/logo-bw.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7 KiB

77
doc/logo.svg Normal file
View file

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="640px"
height="480px"
id="svg3134"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="git-annex.svg">
<defs
id="defs3136" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.77472527"
inkscape:cx="398.6665"
inkscape:cy="232.05718"
inkscape:current-layer="layer1"
inkscape:document-units="px"
showgrid="false"
inkscape:window-width="1024"
inkscape:window-height="566"
inkscape:window-x="0"
inkscape:window-y="12"
inkscape:window-maximized="0" />
<metadata
id="metadata3139">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g4187"
transform="matrix(2.0184211,0,0,1.9796558,-320.30102,-235.1316)">
<path
sodipodi:nodetypes="cccccccccccccccccccccccccssscssssssssscssssssssssscccssssscccssssssssssssssssssscssssssssssscsssssssccscsssssssssscc"
inkscape:connector-curvature="0"
id="path3050"
d="m 306.53525,253.83733 0,-8.5 -13,0 -13,0 0,-7 0,-7 13,0 13,0 0,-9 0,-9 8,0 8,0 0,9 0,9 13.5,0 13.5,0 0,6.97097 0,6.97098 -13.25,0.27902 -13.25,0.27903 -0.29044,8.25 -0.29044,8.25 -7.95956,0 -7.95956,0 z m 47.61806,-15.65972 c -0.74279,-3.71392 -0.94449,-3.42973 3.03949,-4.28261 2.93725,-0.62881 3.20635,-0.45381 3.8569,2.5081 0.76528,3.48431 -0.41943,4.89211 -4.13945,4.91892 -1.59,0.0114 -2.2841,-0.78019 -2.75694,-3.14441 z m -84.47495,0.26933 c -0.94509,-0.59884 -1.14465,-1.8261 -0.65756,-4.04384 0.65055,-2.96191 0.91965,-3.13691 3.8569,-2.5081 3.98398,0.85288 3.78228,0.56869 3.03949,4.28261 -0.65225,3.26128 -3.20683,4.19049 -6.23883,2.26933 z m 100.10308,-3.6591 c -0.97397,-3.17349 -0.87771,-3.38331 2.01471,-4.39162 1.67065,-0.58239 3.15137,-1.05889 3.2905,-1.05889 0.4817,0 2.45604,6.32589 2.08892,6.69301 -0.20278,0.20279 -1.71928,0.75604 -3.36999,1.22946 -2.80739,0.80515 -3.06738,0.64545 -4.02414,-2.47196 z m -113.99619,0.35127 c -1.7875,-0.47243 -3.25,-1.00395 -3.25,-1.18115 0,-0.1772 0.49915,-1.75406 1.10923,-3.50413 0.91204,-2.61627 1.48981,-3.06573 3.25,-2.52826 4.14258,1.26494 4.43043,1.70725 3.24882,4.99213 -1.03407,2.8747 -1.32505,3.02302 -4.35805,2.22141 z m 129.06865,-5.76854 c -1.11873,-2.96385 -1.11262,-2.97064 6.23124,-6.93187 11.96671,-6.45476 21.33423,-14.04033 29.99155,-24.28638 l 3.95856,-4.685 2.84471,2.29809 2.84471,2.29809 -9.25283,9.67863 c -8.79487,9.19959 -19.77532,17.52628 -29.64675,22.48171 -5.4019,2.71174 -5.63638,2.68304 -6.97119,-0.85327 z m -150.51915,-3.39396 c -11.32927,-6.45626 -16.6312,-10.65046 -26.27844,-20.78805 l -8.69524,-9.13721 2.83709,-2.29202 2.83709,-2.29201 3.95856,4.685 c 8.65732,10.24605 18.02484,17.83162 29.99155,24.28638 7.34386,3.96123 7.34997,3.96802 6.23124,6.93187 -0.6159,1.63172 -1.59457,2.96676 -2.1748,2.96676 -0.58024,0 -4.49841,-1.96233 -8.70705,-4.36072 z m 197.47834,-38.29522 c -2.09037,-1.45905 -2.13303,-1.72341 -0.71926,-4.45733 1.4686,-2.83997 1.57066,-2.87126 4.47216,-1.37083 3.40528,1.76094 3.33869,1.57918 1.80874,4.93705 -1.32493,2.9079 -2.42066,3.08347 -5.56164,0.89111 z m -239.11733,-2.89111 c -1.52994,-3.35787 -1.59653,-3.17611 1.80875,-4.93705 2.90195,-1.50066 3.00339,-1.46947 4.47476,1.37584 1.43273,2.7706 1.38758,2.98858 -0.93408,4.50979 -3.28831,2.15458 -3.99241,2.02973 -5.34943,-0.94858 z m 246.64289,-10.99695 c -2.45185,-1.33105 -2.60181,-1.73585 -1.65218,-4.45996 0.57444,-1.64782 1.15826,-2.99604 1.29738,-2.99604 0.60971,0 6.5514,2.22072 6.5514,2.4486 0,1.19224 -2.34002,6.54254 -2.84783,6.51136 -0.35869,-0.022 -1.86564,-0.6988 -3.34877,-1.50396 z m -253.70558,-3.60522 c -0.6038,-1.73208 -1.09782,-3.26306 -1.09782,-3.40218 0,-0.22788 5.94169,-2.4486 6.5514,-2.4486 0.13912,0 0.72372,1.35046 1.29912,3.00103 0.96336,2.76352 0.81674,3.11967 -1.85252,4.5 -3.77382,1.95152 -3.6274,2.00083 -4.90018,-1.65025 z M 444.28525,158.648 c -2.1876,-0.57167 -2.18224,-0.77619 0.25,-9.55323 2.47969,-8.94824 2.50293,-8.57624 -0.5,-8.00219 -1.84865,0.35339 -2.5,0.0485 -2.5,-1.17006 0,-0.90638 0.57475,-1.86851 1.27722,-2.13807 0.70247,-0.26957 2.3837,-2.28045 3.73607,-4.46862 2.0259,-3.27798 3.01446,-3.9785 5.61437,-3.9785 2.51679,0 3.28029,0.49712 3.77191,2.4559 0.33902,1.35074 1.12185,3.71324 1.73962,5.25 2.47807,6.16438 1.30071,9.90716 -2.13766,6.79549 -2.06349,-1.86744 -1.83495,-2.35222 -5.06708,10.74861 -1.18002,4.78301 -1.81783,5.20179 -6.18445,4.06067 z m -265.87191,-10.79564 -2.39931,-9.67948 -2.79205,2.19623 c -1.53563,1.20792 -2.95962,2.02866 -3.16443,1.82385 -0.20481,-0.2048 0.45171,-2.3936 1.45893,-4.864 1.00721,-2.4704 2.08435,-5.27913 2.39365,-6.24163 0.38632,-1.2022 1.60129,-1.75 3.88133,-1.75 2.63951,0 4.2837,0.97945 8.03138,4.78435 2.59183,2.63139 4.71241,5.55639 4.71241,6.5 0,2.44192 -1.09405,2.12956 -3.6228,-1.03435 -1.20886,-1.5125 -2.53285,-2.41791 -2.9422,-2.01203 -0.40936,0.40589 0.27444,4.59426 1.51954,9.30748 1.24511,4.71323 2.06938,8.76396 1.83173,9.00161 -0.23766,0.23766 -1.79938,0.70556 -3.47049,1.03978 l -3.03838,0.60768 z"
style="fill:#40bf4c;fill-opacity:1" />
<path
sodipodi:nodetypes="ccccccccc"
style="fill:#d8372c;fill-opacity:1"
d="m 280.84173,275.15053 0,-7.5 34.5,0 34.5,0 0,7.5 0,7.5 -34.5,0 -34.5,0 z"
id="path4113"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="sssssscssssssscccccccsssssss"
style="fill:#666666;fill-opacity:1;fill-rule:nonzero"
d="m 305.37638,349.62884 c -7.82337,-2.34524 -9.93249,-3.49941 -14.92004,-8.16468 -6.87887,-6.43437 -9.31806,-12.59298 -9.31806,-23.52679 0,-9.89596 2.18037,-16.19728 7.53932,-21.78886 3.82241,-3.98833 9.65386,-7.16237 13.15894,-7.16237 2.48831,0 2.53984,0.14842 2.53984,7.31479 l 0,7.31479 -3.45481,1.64748 c -4.81886,2.29795 -6.86084,6.68232 -6.35692,13.64901 0.80898,11.18406 7.23177,15.57393 22.7861,15.57393 7.49151,0 10.17602,-0.39397 12.57134,-1.84493 6.58103,-3.98644 9.88655,-12.78524 7.50927,-19.98849 -1.34692,-4.08119 -7.17683,-9.66658 -10.08978,-9.66658 -1.76771,0 -1.9652,0.70826 -1.9652,7.04772 l 0,7.04771 -6.25,-0.29771 -6.25,-0.29772 0,-14 0,-14 18.5,0 18.5,0 0.30226,5.25 c 0.259,4.49869 0.0444,5.25219 -1.5,5.26531 -4.31224,0.0366 -4.5766,1.53706 -1.13167,6.42294 3.21746,4.56328 3.32941,5.04721 3.32941,14.3919 0,8.31506 -0.34655,10.34833 -2.47354,14.51253 -5.22325,10.22604 -15.21053,15.75616 -29.43932,16.30103 -5.72334,0.21916 -10.75291,-0.15138 -13.58714,-1.00101 z"
id="path4115"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB