Skip to content

[Filesystem] Made sure Filesystem::dumpFile() overwrites an existing file #7820

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

Merged
merged 1 commit into from
Apr 24, 2013

Conversation

jakzal
Copy link
Contributor

@jakzal jakzal commented Apr 23, 2013

#7753 introduced a change in behaviour. Before, ConfigCache simply used the rename() function to save a file. It was replaced by Filesystem::dumpFile() which internally uses Filesystem::rename(). The later checks if file already exists and throws an exception if it exists.

This PR makes sure that Filesystem::dumpFile() removes the file before creating a new one.

Alternatively, we could introduce a third parameter to the Filesystem::rename() which would allow to overwrite the target file.

Before #7752:

After #7752:

Q A
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #7816
License MIT
Doc PR ~

@mpdude
Copy link
Contributor

mpdude commented Apr 23, 2013

I'd be for the third param ($overwrite = false) for rename if @fabpot accepts that. So we still get the check for success and it might be useful for others too.

Thanks!

@jakzal
Copy link
Contributor Author

jakzal commented Apr 24, 2013

@fabpot are you fine with adding an optional parameter to Filesystem::rename()? If set to true it would prevent "file already exists" exception.

@fabpot
Copy link
Member

fabpot commented Apr 24, 2013

@jakzal adding an opt arg looks good to me.

@jakzal
Copy link
Contributor Author

jakzal commented Apr 24, 2013

Ok. PR updated.

fabpot added a commit that referenced this pull request Apr 24, 2013
This PR was merged into the master branch.

Discussion
----------

[Filesystem] Made sure Filesystem::dumpFile() overwrites an existing file

#7753 introduced a change in behaviour. Before, ConfigCache simply used the ``rename()`` function to save a file. It was replaced by ``Filesystem::dumpFile()`` which internally uses ``Filesystem::rename()``. The later checks if file already exists and throws an exception if it exists.

This PR makes sure that ``Filesystem::dumpFile()`` removes the file before creating a new one.

Alternatively, we could introduce a third parameter to the ``Filesystem::rename()`` which would allow to overwrite the target file.

Before #7752:
* [CompilerDebugDumpPass](https://github.com/symfony/symfony/blob/d100ffaf761b46acdb2440c04602378b87b0d610/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php#L23) uses ConfigCache
* [ConfigCache](https://github.com/symfony/symfony/blob/d100ffaf761b46acdb2440c04602378b87b0d610/src/Symfony/Component/Config/ConfigCache.php#L103) uses the [rename()](http://uk1.php.net/rename) function (which overwrites a file if it exists)

After #7752:
* [CompilerDebugDumpPass](https://github.com/symfony/symfony/blob/ad47bc47380188041b7889f40e380ad3766a0110/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php#L23) uses the ``Filesystem::dumpFile()``
* [Filesystem::dumpFile()](https://github.com/webfactory/symfony/blob/ad47bc47380188041b7889f40e380ad3766a0110/src/Symfony/Component/Filesystem/Filesystem.php#L458) uses the [Filesystem::rename()](https://github.com/webfactory/symfony/blob/ad47bc47380188041b7889f40e380ad3766a0110/src/Symfony/Component/Filesystem/Filesystem.php#L239) (which throws an exception if file exists)

| Q | 	A
| ------------- | ---
| Bug fix?	| yes
| New feature?	| no
| BC breaks?	| no
| Deprecations?	| no
| Tests pass?	| yes
| Fixed tickets	| #7816
| License | 	MIT
| Doc PR	| ~

Commits
-------

4f4ec76 [Filesystem] Made sure Filesystem::dumpFile() overwrites an existing file.
@fabpot fabpot closed this Apr 24, 2013
@fabpot fabpot merged commit 4f4ec76 into symfony:master Apr 24, 2013
@jakzal jakzal deleted the filesystem-dump-file branch April 24, 2013 09:30
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.

3 participants