Feature: merge conflicts resolution
See original GitHub issueI suggest to consider an automatic merge conflict resolution for Pipfile.lock
.
This feature is similar to this feature in yarn
: https://github.com/yarnpkg/yarn/issues/2155
Describe your environment
- OS Type: macos
- Python version:
$ python -V
3.6.4 - Pipenv version:
$ pipenv --version
9.0.3
Expected result
I expect, that after I have resolved my conflicts in Pipfile
, pipenv
will automatically resolve merge conflicts in Pipfile.json
for me.
Actual result
Cli output:
~/Desktop/test-pipenv master|MERGING ✗ §
» pipenv install mypy
Installing mypy…
Traceback (most recent call last):
File "/usr/local/bin/pipenv", line 11, in <module>
sys.exit(cli())
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1875, in install
c = pip_install(package_name, ignore_hashes=True, allow_global=system, no_deps=False, verbose=verbose, pre=pre)
File "/usr/local/lib/python3.6/site-packages/pipenv/cli.py", line 1366, in pip_install
sources = project.sources
File "/usr/local/lib/python3.6/site-packages/pipenv/project.py", line 436, in sources
meta_ = self.lockfile_content['_meta']
File "/usr/local/lib/python3.6/site-packages/pipenv/project.py", line 337, in lockfile_content
return json.load(lock)
File "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 4 column 1 (char 35)
Pipfile
:
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[packages]
django = "*"
<<<<<<< HEAD
djangorestframework = "*"
=======
celery = "*"
>>>>>>> feature-celery
[dev-packages]
Pipfile.lock
:
{
"_meta": {
"hash": {
<<<<<<< HEAD
"sha256": "1f3d4cc7027911c0d5599450f18f080ccf209827c665920bad7fc6e832bb3b38"
=======
"sha256": "43db93da0ec552507b288b8dc4aa9f463426a41aad9795b8360fcc2a167d6550"
>>>>>>> feature-celery
},
"host-environment-markers": {
"implementation_name": "cpython",
"implementation_version": "3.6.4",
"os_name": "posix",
"platform_machine": "x86_64",
"platform_python_implementation": "CPython",
"platform_release": "15.6.0",
"platform_system": "Darwin",
"platform_version": "Darwin Kernel Version 15.6.0: Fri Feb 17 10:21:18 PST 2017; root:xnu-3248.60.11.4.1~1/RELEASE_X86_64",
"python_full_version": "3.6.4",
"python_version": "3.6",
"sys_platform": "darwin"
},
"pipfile-spec": 6,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.python.org/simple",
"verify_ssl": true
}
]
},
"default": {
"amqp": {
"hashes": [
"sha256:4e28d3ea61a64ae61830000c909662cb053642efddbe96503db0e7783a6ee85b",
"sha256:cba1ace9d4ff6049b190d8b7991f9c1006b443a5238021aca96dd6ad2ac9da22"
],
"version": "==2.2.2"
},
"billiard": {
"hashes": [
"sha256:abd9ce008c9a71ccde2c816f8daa36246e92a21e6a799831b887d88277187ecd",
"sha256:1d7b22bdc47aa52841120fcd22a74ae4fc8c13e9d3935643098184f5788c3ce6"
],
"version": "==3.5.0.3"
},
"celery": {
"hashes": [
"sha256:81a67f0d53a688ec2bc8557bd5d6d7218f925a6f2e6df80e01560de9e28997ec",
"sha256:77ff3730198d6a17b3c1f05579ebe570b579efb35f6d7e13dba3b1368d068b35"
],
"version": "==4.1.0"
},
"django": {
"hashes": [
"sha256:7c8ff92285406fb349e765e9ade685eec7271d6f5c3f918e495a74768b765c99",
"sha256:dc3b61d054f1bced64628c62025d480f655303aea9f408e5996c339a543b45f0"
],
"version": "==2.0.2"
},
<<<<<<< HEAD
"djangorestframework": {
"hashes": [
"sha256:1f6baf40ed456ed2af6bd1a4ff8bbc3503cebea16509993aea2b7085bc097766",
"sha256:9f9e94e8d22b100ed3a43cee8c47a7ff7b185e778a1f2da9ec5c73fc4e081b87"
],
"version": "==3.7.7"
=======
"kombu": {
"hashes": [
"sha256:01f0da9fe222a2183345004243d1518c0fbe5875955f1b24842f2d9c65709ade",
"sha256:4249d9dd9dbf1fcec471d1c2def20653c9310dd1a217272d77e4844f9d5273cb"
],
"version": "==4.1.0"
>>>>>>> feature-celery
},
"pytz": {
"hashes": [
"sha256:80af0f3008046b9975242012a985f04c5df1f01eed4ec1633d56cc47a75a6a48",
"sha256:feb2365914948b8620347784b6b6da356f31c9d03560259070b2f30cff3d469d",
"sha256:59707844a9825589878236ff2f4e0dc9958511b7ffaae94dc615da07d4a68d33",
"sha256:d0ef5ef55ed3d37854320d4926b04a4cb42a2e88f71da9ddfdacfde8e364f027",
"sha256:c41c62827ce9cafacd6f2f7018e4f83a6f1986e87bfd000b8cfbd4ab5da95f1a",
"sha256:8cc90340159b5d7ced6f2ba77694d946fc975b09f1a51d93f3ce3bb399396f94",
"sha256:dd2e4ca6ce3785c8dd342d1853dd9052b19290d5bf66060846e5dc6b8d6667f7",
"sha256:699d18a2a56f19ee5698ab1123bbcc1d269d061996aeb1eda6d89248d3542b82",
"sha256:fae4cffc040921b8a2d60c6cf0b5d662c1190fe54d718271db4eb17d44a185b7"
],
"version": "==2017.3"
},
"vine": {
"hashes": [
"sha256:6849544be74ec3638e84d90bc1cf2e1e9224cc10d96cd4383ec3f69e9bce077b",
"sha256:52116d59bc45392af9fdd3b75ed98ae48a93e822cee21e5fda249105c59a7a72"
],
"version": "==1.1.4"
}
},
"develop": {}
}
Steps to replicate
- Create new project folder
- git init
- pipenv install django
- git commit -a -m ‘Initial’
- git checkout -b feature-celery
- pipenv install celery
- git commit -a m ‘Adds celery’
- git checkout master
- pipenv install djangorestframework
- git commit -a -m ‘Adds rest framework’
- git merge feature-celery
- Resolve merge conflicts in
Pipfile
Issue Analytics
- State:
- Created 6 years ago
- Reactions:16
- Comments:11 (7 by maintainers)
Top Results From Across the Web
Git merge conflicts | Atlassian Git Tutorial
A merge conflict arises when Git cannot automatically resolve code differences ... Git can handle most merges on its own with automatic merging...
Read more >How to Resolve Merge Conflicts in Git? | Simplilearn [Updated]
A merge conflict is an event that takes place when Git is unable to automatically resolve differences in code between two commits.
Read more >Resolving a merge conflict using the command line
You can resolve merge conflicts using the command line and a text editor. ... Merge conflicts occur when competing changes are made to...
Read more >Merge conflicts - GitLab Docs
Resolve conflicts from the command line ; Open the terminal and check out your feature branch. For example, my-feature-branch : git switch my-feature-branch....
Read more >How to Resolve GitHub Merge Conflicts | Cloudbees Blog
Trigger the merge conflict by git merge feature/add-section2. Now you have basically two choices to resolve your conflict:.
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Why was this closed? Is there a recommend approach when this happens? It seems like a fairly common case.
Yea, if you have a merge conflict w/ your pipfiles, you can run
pipenv lock
to generate a newPipfile.lock
This works great.