Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

escape dollar signs along with our quotes #217

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pudge
Copy link

@pudge pudge commented Mar 23, 2016

self.escape_quotes is used for putting everything in double quotes, but a $ in double quotes isn't happy, for example:

Running command: git tag -a -m "fix ${ => #{ typo" "FOO@7974" "svn/tags/FOO@7974"
sh: 1: Syntax error: Unterminated quoted string
command failed:
git tag -a -m "fix ${ => #{ typo" "FOO@7974" "svn/tags/FOO@7974"

With this patch:

Running command: git tag -a -m "fix \${ => #{ typo" "FOO@7974" "svn/tags/FOO@7974"

@pudge
Copy link
Author

pudge commented Mar 23, 2016

Ugh. Just found out that this breaks too:

Running command: git tag -a -m "new tag`" "FOO_16" "svn/tags/FOO_16"
sh: 1: Syntax error: EOF in backquote substitution
command failed:
git tag -a -m "new tag`" "FOO_16" "svn/tags/FOO_16"

Need to escape this, too:

git tag -a -m "new tag\`" "FOO_16" "svn/tags/FOO_16"

There's got to be a better generalized solution.

@@ -154,6 +154,7 @@ def parse(args)

def self.escape_quotes(str)
str.gsub(/'|"/) { |c| "\\#{c}" }
.gsub(/\$/) { |c| '\\$' }

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would Shellwords.escape be a good fit here?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly. I am not a ruby guy, but it looks good. However, we are not just passing this to the shell, we are passing it to the shell and putting it in double quotes. I think if we used shellwords.escape we might also want to change all the calling instances to not be wrapped in double quotes. Not sure.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we've had to remove it in the past because it's not implemented in Ruby 1.8. A large number of svn2git users don't otherwise manage Ruby installations, so they just install on whatever their system already has. We support at least the Ubuntu LTS releases (so, going back 5 years) and a couple versions of MacOS X.

I'd need to reevaluate since Ubuntu 10.04 has now fallen off the support path, but we might not be able to realistically use any 1.9+ specific methods yet.

@normanyee normanyee mentioned this pull request Jul 14, 2017
@normanyee
Copy link

I ran into the same problem as pudge and was going to post a similar pull request until I found pudge's. Is this pull request going to be merged?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants