prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Deprecate update/sync stores
  Wondering what is best with these commands.
  
  on the one hand they are quite useful for grouping common operations
  
  on the other, it would be better for users to learn the more powerful fs api, and grouping can be done in other ways
  
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `pootle/apps/pootle_app/management/commands/update_stores.py`
  Content:
  ```
  1 # -*- coding: utf-8 -*-
  2 #
  3 # Copyright (C) Pootle contributors.
  4 #
  5 # This file is a part of the Pootle project. It is distributed under the GPL3
  6 # or later license. See the LICENSE file for a copy of the license and the
  7 # AUTHORS file for copyright and authorship information.
  8 
  9 import logging
  10 import os
  11 os.environ['DJANGO_SETTINGS_MODULE'] = 'pootle.settings'
  12 
  13 from pootle_app.management.commands import PootleCommand
  14 from pootle_language.models import Language
  15 from pootle_fs.utils import FSPlugin
  16 from pootle_project.models import Project
  17 
  18 
  19 logger = logging.getLogger(__name__)
  20 
  21 
  22 class Command(PootleCommand):
  23     help = "Update database stores from files."
  24     process_disabled_projects = True
  25     log_name = "update"
  26 
  27     def add_arguments(self, parser):
  28         super(Command, self).add_arguments(parser)
  29         parser.add_argument(
  30             '--overwrite',
  31             action='store_true',
  32             dest='overwrite',
  33             default=False,
  34             help="Don't just update untranslated units "
  35                  "and add new units, but overwrite database "
  36                  "translations to reflect state in files.",
  37         )
  38         parser.add_argument(
  39             '--force',
  40             action='store_true',
  41             dest='force',
  42             default=False,
  43             help="Unconditionally process all files (even if they "
  44                  "appear unchanged).",
  45         )
  46 
  47     def handle_translation_project(self, translation_project, **options):
  48         """
  49         """
  50         path_glob = "%s*" % translation_project.pootle_path
  51         plugin = FSPlugin(translation_project.project)
  52         plugin.add(pootle_path=path_glob, update="pootle")
  53         plugin.rm(pootle_path=path_glob, update="pootle")
  54         plugin.resolve(pootle_path=path_glob)
  55         plugin.sync(pootle_path=path_glob, update="pootle")
  56 
  57     def _parse_tps_to_create(self, project):
  58         plugin = FSPlugin(project)
  59         plugin.fetch()
  60         untracked_languages = set(
  61             fs.pootle_path.split("/")[1]
  62             for fs
  63             in plugin.state()["fs_untracked"])
  64         new_langs = (
  65             [lang for lang
  66              in untracked_languages
  67              if lang in self.languages]
  68             if self.languages
  69             else untracked_languages)
  70         return Language.objects.filter(
  71             code__in=new_langs).exclude(
  72                 code__in=project.translationproject_set.values_list(
  73                     "language__code", flat=True))
  74 
  75     def _create_tps_for_project(self, project):
  76         for language in self._parse_tps_to_create(project):
  77             project.translationproject_set.create(
  78                 language=language,
  79                 project=project)
  80 
  81     def handle_all(self, **options):
  82         projects = (
  83             Project.objects.filter(code__in=self.projects)
  84             if self.projects
  85             else Project.objects.all())
  86         for project in projects.iterator():
  87             self._create_tps_for_project(project)
  88         super(Command, self).handle_all(**options)
  89
  ```
  
  Path: `pootle/apps/pootle_app/management/commands/sync_stores.py`
  Content:
  ```
  1 # -*- coding: utf-8 -*-
  2 #
  3 # Copyright (C) Pootle contributors.
  4 #
  5 # This file is a part of the Pootle project. It is distributed under the GPL3
  6 # or later license. See the LICENSE file for a copy of the license and the
  7 # AUTHORS file for copyright and authorship information.
  8 
  9 import logging
  10 import os
  11 os.environ['DJANGO_SETTINGS_MODULE'] = 'pootle.settings'
  12 
  13 from pootle_app.management.commands import PootleCommand
  14 from pootle_fs.utils import FSPlugin
  15 
  16 
  17 logger = logging.getLogger(__name__)
  18 
  19 
  20 class Command(PootleCommand):
  21     help = "Save new translations to disk manually."
  22     process_disabled_projects = True
  23 
  24     def add_arguments(self, parser):
  25         super(Command, self).add_arguments(parser)
  26         parser.add_argument(
  27             '--overwrite',
  28             action='store_true',
  29             dest='overwrite',
  30             default=False,
  31             help="Don't just save translations, but "
  32                  "overwrite files to reflect state in database",
  33         )
  34         parser.add_argument(
  35             '--skip-missing',
  36             action='store_true',
  37             dest='skip_missing',
  38             default=False,
  39             help="Ignore missing files on disk",
  40         )
  41         parser.add_argument(
  42             '--force',
  43             action='store_true',
  44             dest='force',
  45             default=False,
  46             help="Don't ignore stores synced after last change",
  47         )
  48 
  49     warn_on_conflict = []
  50 
  51     def handle_all_stores(self, translation_project, **options):
  52         path_glob = "%s*" % translation_project.pootle_path
  53         plugin = FSPlugin(translation_project.project)
  54         plugin.fetch()
  55         if translation_project.project.pk not in self.warn_on_conflict:
  56             state = plugin.state()
  57             if any(k in state for k in ["conflict", "conflict_untracked"]):
  58                 logger.warn(
  59                     "The project '%s' has conflicting changes in the database "
  60                     "and translation files. Use `pootle fs resolve` to tell "
  61                     "pootle how to merge",
  62                     translation_project.project.code)
  63                 self.warn_on_conflict.append(
  64                     translation_project.project.pk)
  65         if not options["skip_missing"]:
  66             plugin.add(pootle_path=path_glob, update="fs")
  67         if options["overwrite"]:
  68             plugin.resolve(
  69                 pootle_path=path_glob,
  70                 pootle_wins=True)
  71         plugin.sync(pootle_path=path_glob, update="fs")
  72         if options["force"]:
  73             # touch the timestamps on disk for files that
  74             # werent updated
  75             pass
  76
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/pootle/apps/pootle_app/management/commands/sync_stores.py b/pootle/apps/pootle_app/management/commands/sync_stores.py
  --- a/pootle/apps/pootle_app/management/commands/sync_stores.py
  +++ b/pootle/apps/pootle_app/management/commands/sync_stores.py
  @@ -28,9 +28,7 @@
               action='store_true',
               dest='overwrite',
               default=False,
  -            help="Don't just save translations, but "
  -                 "overwrite files to reflect state in database",
  -        )
  +            help="This option has been removed.")
           parser.add_argument(
               '--skip-missing',
               action='store_true',
  @@ -43,11 +41,21 @@
               action='store_true',
               dest='force',
               default=False,
  -            help="Don't ignore stores synced after last change",
  -        )
  +            help="This option has been removed.")
   
       warn_on_conflict = []
   
  +    def handle(self, **options):
  +        logger.warn(
  +            "The sync_stores command is deprecated, use pootle fs instead")
  +        if options["force"]:
  +            logger.warn(
  +                "The force option no longer has any affect on this command")
  +        if options["overwrite"]:
  +            logger.warn(
  +                "The overwrite option no longer has any affect on this command")
  +        super(Command, self).handle(**options)
  +
       def handle_all_stores(self, translation_project, **options):
           path_glob = "%s*" % translation_project.pootle_path
           plugin = FSPlugin(translation_project.project)
  @@ -64,12 +72,4 @@
                       translation_project.project.pk)
           if not options["skip_missing"]:
               plugin.add(pootle_path=path_glob, update="fs")
  -        if options["overwrite"]:
  -            plugin.resolve(
  -                pootle_path=path_glob,
  -                pootle_wins=True)
           plugin.sync(pootle_path=path_glob, update="fs")
  -        if options["force"]:
  -            # touch the timestamps on disk for files that
  -            # werent updated
  -            pass
  diff --git a/pootle/apps/pootle_app/management/commands/update_stores.py b/pootle/apps/pootle_app/management/commands/update_stores.py
  --- a/pootle/apps/pootle_app/management/commands/update_stores.py
  +++ b/pootle/apps/pootle_app/management/commands/update_stores.py
  @@ -40,9 +40,7 @@
               action='store_true',
               dest='force',
               default=False,
  -            help="Unconditionally process all files (even if they "
  -                 "appear unchanged).",
  -        )
  +            help="This option has been removed.")
   
       def handle_translation_project(self, translation_project, **options):
           """
  @@ -51,7 +49,9 @@
           plugin = FSPlugin(translation_project.project)
           plugin.add(pootle_path=path_glob, update="pootle")
           plugin.rm(pootle_path=path_glob, update="pootle")
  -        plugin.resolve(pootle_path=path_glob)
  +        plugin.resolve(
  +            pootle_path=path_glob,
  +            merge=not options["overwrite"])
           plugin.sync(pootle_path=path_glob, update="pootle")
   
       def _parse_tps_to_create(self, project):
  @@ -79,6 +79,11 @@
                   project=project)
   
       def handle_all(self, **options):
  +        logger.warn(
  +            "The update_stores command is deprecated, use pootle fs instead")
  +        if options["force"]:
  +            logger.warn(
  +                "The force option no longer has any affect on this command")
           projects = (
               Project.objects.filter(code__in=self.projects)
               if self.projects
  
verification_info: {"golden_diff": "diff --git a/pootle/apps/pootle_app/management/commands/sync_stores.py b/pootle/apps/pootle_app/management/commands/sync_stores.py\n--- a/pootle/apps/pootle_app/management/commands/sync_stores.py\n+++ b/pootle/apps/pootle_app/management/commands/sync_stores.py\n@@ -28,9 +28,7 @@\n             action='store_true',\n             dest='overwrite',\n             default=False,\n-            help=\"Don't just save translations, but \"\n-                 \"overwrite files to reflect state in database\",\n-        )\n+            help=\"This option has been removed.\")\n         parser.add_argument(\n             '--skip-missing',\n             action='store_true',\n@@ -43,11 +41,21 @@\n             action='store_true',\n             dest='force',\n             default=False,\n-            help=\"Don't ignore stores synced after last change\",\n-        )\n+            help=\"This option has been removed.\")\n \n     warn_on_conflict = []\n \n+    def handle(self, **options):\n+        logger.warn(\n+            \"The sync_stores command is deprecated, use pootle fs instead\")\n+        if options[\"force\"]:\n+            logger.warn(\n+                \"The force option no longer has any affect on this command\")\n+        if options[\"overwrite\"]:\n+            logger.warn(\n+                \"The overwrite option no longer has any affect on this command\")\n+        super(Command, self).handle(**options)\n+\n     def handle_all_stores(self, translation_project, **options):\n         path_glob = \"%s*\" % translation_project.pootle_path\n         plugin = FSPlugin(translation_project.project)\n@@ -64,12 +72,4 @@\n                     translation_project.project.pk)\n         if not options[\"skip_missing\"]:\n             plugin.add(pootle_path=path_glob, update=\"fs\")\n-        if options[\"overwrite\"]:\n-            plugin.resolve(\n-                pootle_path=path_glob,\n-                pootle_wins=True)\n         plugin.sync(pootle_path=path_glob, update=\"fs\")\n-        if options[\"force\"]:\n-            # touch the timestamps on disk for files that\n-            # werent updated\n-            pass\ndiff --git a/pootle/apps/pootle_app/management/commands/update_stores.py b/pootle/apps/pootle_app/management/commands/update_stores.py\n--- a/pootle/apps/pootle_app/management/commands/update_stores.py\n+++ b/pootle/apps/pootle_app/management/commands/update_stores.py\n@@ -40,9 +40,7 @@\n             action='store_true',\n             dest='force',\n             default=False,\n-            help=\"Unconditionally process all files (even if they \"\n-                 \"appear unchanged).\",\n-        )\n+            help=\"This option has been removed.\")\n \n     def handle_translation_project(self, translation_project, **options):\n         \"\"\"\n@@ -51,7 +49,9 @@\n         plugin = FSPlugin(translation_project.project)\n         plugin.add(pootle_path=path_glob, update=\"pootle\")\n         plugin.rm(pootle_path=path_glob, update=\"pootle\")\n-        plugin.resolve(pootle_path=path_glob)\n+        plugin.resolve(\n+            pootle_path=path_glob,\n+            merge=not options[\"overwrite\"])\n         plugin.sync(pootle_path=path_glob, update=\"pootle\")\n \n     def _parse_tps_to_create(self, project):\n@@ -79,6 +79,11 @@\n                 project=project)\n \n     def handle_all(self, **options):\n+        logger.warn(\n+            \"The update_stores command is deprecated, use pootle fs instead\")\n+        if options[\"force\"]:\n+            logger.warn(\n+                \"The force option no longer has any affect on this command\")\n         projects = (\n             Project.objects.filter(code__in=self.projects)\n             if self.projects\n", "issue": "Deprecate update/sync stores\nWondering what is best with these commands.\r\n\r\non the one hand they are quite useful for grouping common operations\r\n\r\non the other, it would be better for users to learn the more powerful fs api, and grouping can be done in other ways\r\n\r\n\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n#\n# Copyright (C) Pootle contributors.\n#\n# This file is a part of the Pootle project. It is distributed under the GPL3\n# or later license. See the LICENSE file for a copy of the license and the\n# AUTHORS file for copyright and authorship information.\n\nimport logging\nimport os\nos.environ['DJANGO_SETTINGS_MODULE'] = 'pootle.settings'\n\nfrom pootle_app.management.commands import PootleCommand\nfrom pootle_language.models import Language\nfrom pootle_fs.utils import FSPlugin\nfrom pootle_project.models import Project\n\n\nlogger = logging.getLogger(__name__)\n\n\nclass Command(PootleCommand):\n    help = \"Update database stores from files.\"\n    process_disabled_projects = True\n    log_name = \"update\"\n\n    def add_arguments(self, parser):\n        super(Command, self).add_arguments(parser)\n        parser.add_argument(\n            '--overwrite',\n            action='store_true',\n            dest='overwrite',\n            default=False,\n            help=\"Don't just update untranslated units \"\n                 \"and add new units, but overwrite database \"\n                 \"translations to reflect state in files.\",\n        )\n        parser.add_argument(\n            '--force',\n            action='store_true',\n            dest='force',\n            default=False,\n            help=\"Unconditionally process all files (even if they \"\n                 \"appear unchanged).\",\n        )\n\n    def handle_translation_project(self, translation_project, **options):\n        \"\"\"\n        \"\"\"\n        path_glob = \"%s*\" % translation_project.pootle_path\n        plugin = FSPlugin(translation_project.project)\n        plugin.add(pootle_path=path_glob, update=\"pootle\")\n        plugin.rm(pootle_path=path_glob, update=\"pootle\")\n        plugin.resolve(pootle_path=path_glob)\n        plugin.sync(pootle_path=path_glob, update=\"pootle\")\n\n    def _parse_tps_to_create(self, project):\n        plugin = FSPlugin(project)\n        plugin.fetch()\n        untracked_languages = set(\n            fs.pootle_path.split(\"/\")[1]\n            for fs\n            in plugin.state()[\"fs_untracked\"])\n        new_langs = (\n            [lang for lang\n             in untracked_languages\n             if lang in self.languages]\n            if self.languages\n            else untracked_languages)\n        return Language.objects.filter(\n            code__in=new_langs).exclude(\n                code__in=project.translationproject_set.values_list(\n                    \"language__code\", flat=True))\n\n    def _create_tps_for_project(self, project):\n        for language in self._parse_tps_to_create(project):\n            project.translationproject_set.create(\n                language=language,\n                project=project)\n\n    def handle_all(self, **options):\n        projects = (\n            Project.objects.filter(code__in=self.projects)\n            if self.projects\n            else Project.objects.all())\n        for project in projects.iterator():\n            self._create_tps_for_project(project)\n        super(Command, self).handle_all(**options)\n", "path": "pootle/apps/pootle_app/management/commands/update_stores.py"}, {"content": "# -*- coding: utf-8 -*-\n#\n# Copyright (C) Pootle contributors.\n#\n# This file is a part of the Pootle project. It is distributed under the GPL3\n# or later license. See the LICENSE file for a copy of the license and the\n# AUTHORS file for copyright and authorship information.\n\nimport logging\nimport os\nos.environ['DJANGO_SETTINGS_MODULE'] = 'pootle.settings'\n\nfrom pootle_app.management.commands import PootleCommand\nfrom pootle_fs.utils import FSPlugin\n\n\nlogger = logging.getLogger(__name__)\n\n\nclass Command(PootleCommand):\n    help = \"Save new translations to disk manually.\"\n    process_disabled_projects = True\n\n    def add_arguments(self, parser):\n        super(Command, self).add_arguments(parser)\n        parser.add_argument(\n            '--overwrite',\n            action='store_true',\n            dest='overwrite',\n            default=False,\n            help=\"Don't just save translations, but \"\n                 \"overwrite files to reflect state in database\",\n        )\n        parser.add_argument(\n            '--skip-missing',\n            action='store_true',\n            dest='skip_missing',\n            default=False,\n            help=\"Ignore missing files on disk\",\n        )\n        parser.add_argument(\n            '--force',\n            action='store_true',\n            dest='force',\n            default=False,\n            help=\"Don't ignore stores synced after last change\",\n        )\n\n    warn_on_conflict = []\n\n    def handle_all_stores(self, translation_project, **options):\n        path_glob = \"%s*\" % translation_project.pootle_path\n        plugin = FSPlugin(translation_project.project)\n        plugin.fetch()\n        if translation_project.project.pk not in self.warn_on_conflict:\n            state = plugin.state()\n            if any(k in state for k in [\"conflict\", \"conflict_untracked\"]):\n                logger.warn(\n                    \"The project '%s' has conflicting changes in the database \"\n                    \"and translation files. Use `pootle fs resolve` to tell \"\n                    \"pootle how to merge\",\n                    translation_project.project.code)\n                self.warn_on_conflict.append(\n                    translation_project.project.pk)\n        if not options[\"skip_missing\"]:\n            plugin.add(pootle_path=path_glob, update=\"fs\")\n        if options[\"overwrite\"]:\n            plugin.resolve(\n                pootle_path=path_glob,\n                pootle_wins=True)\n        plugin.sync(pootle_path=path_glob, update=\"fs\")\n        if options[\"force\"]:\n            # touch the timestamps on disk for files that\n            # werent updated\n            pass\n", "path": "pootle/apps/pootle_app/management/commands/sync_stores.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n#\n# Copyright (C) Pootle contributors.\n#\n# This file is a part of the Pootle project. It is distributed under the GPL3\n# or later license. See the LICENSE file for a copy of the license and the\n# AUTHORS file for copyright and authorship information.\n\nimport logging\nimport os\nos.environ['DJANGO_SETTINGS_MODULE'] = 'pootle.settings'\n\nfrom pootle_app.management.commands import PootleCommand\nfrom pootle_language.models import Language\nfrom pootle_fs.utils import FSPlugin\nfrom pootle_project.models import Project\n\n\nlogger = logging.getLogger(__name__)\n\n\nclass Command(PootleCommand):\n    help = \"Update database stores from files.\"\n    process_disabled_projects = True\n    log_name = \"update\"\n\n    def add_arguments(self, parser):\n        super(Command, self).add_arguments(parser)\n        parser.add_argument(\n            '--overwrite',\n            action='store_true',\n            dest='overwrite',\n            default=False,\n            help=\"Don't just update untranslated units \"\n                 \"and add new units, but overwrite database \"\n                 \"translations to reflect state in files.\",\n        )\n        parser.add_argument(\n            '--force',\n            action='store_true',\n            dest='force',\n            default=False,\n            help=\"This option has been removed.\")\n\n    def handle_translation_project(self, translation_project, **options):\n        \"\"\"\n        \"\"\"\n        path_glob = \"%s*\" % translation_project.pootle_path\n        plugin = FSPlugin(translation_project.project)\n        plugin.add(pootle_path=path_glob, update=\"pootle\")\n        plugin.rm(pootle_path=path_glob, update=\"pootle\")\n        plugin.resolve(\n            pootle_path=path_glob,\n            merge=not options[\"overwrite\"])\n        plugin.sync(pootle_path=path_glob, update=\"pootle\")\n\n    def _parse_tps_to_create(self, project):\n        plugin = FSPlugin(project)\n        plugin.fetch()\n        untracked_languages = set(\n            fs.pootle_path.split(\"/\")[1]\n            for fs\n            in plugin.state()[\"fs_untracked\"])\n        new_langs = (\n            [lang for lang\n             in untracked_languages\n             if lang in self.languages]\n            if self.languages\n            else untracked_languages)\n        return Language.objects.filter(\n            code__in=new_langs).exclude(\n                code__in=project.translationproject_set.values_list(\n                    \"language__code\", flat=True))\n\n    def _create_tps_for_project(self, project):\n        for language in self._parse_tps_to_create(project):\n            project.translationproject_set.create(\n                language=language,\n                project=project)\n\n    def handle_all(self, **options):\n        logger.warn(\n            \"The update_stores command is deprecated, use pootle fs instead\")\n        if options[\"force\"]:\n            logger.warn(\n                \"The force option no longer has any affect on this command\")\n        projects = (\n            Project.objects.filter(code__in=self.projects)\n            if self.projects\n            else Project.objects.all())\n        for project in projects.iterator():\n            self._create_tps_for_project(project)\n        super(Command, self).handle_all(**options)\n", "path": "pootle/apps/pootle_app/management/commands/update_stores.py"}, {"content": "# -*- coding: utf-8 -*-\n#\n# Copyright (C) Pootle contributors.\n#\n# This file is a part of the Pootle project. It is distributed under the GPL3\n# or later license. See the LICENSE file for a copy of the license and the\n# AUTHORS file for copyright and authorship information.\n\nimport logging\nimport os\nos.environ['DJANGO_SETTINGS_MODULE'] = 'pootle.settings'\n\nfrom pootle_app.management.commands import PootleCommand\nfrom pootle_fs.utils import FSPlugin\n\n\nlogger = logging.getLogger(__name__)\n\n\nclass Command(PootleCommand):\n    help = \"Save new translations to disk manually.\"\n    process_disabled_projects = True\n\n    def add_arguments(self, parser):\n        super(Command, self).add_arguments(parser)\n        parser.add_argument(\n            '--overwrite',\n            action='store_true',\n            dest='overwrite',\n            default=False,\n            help=\"This option has been removed.\")\n        parser.add_argument(\n            '--skip-missing',\n            action='store_true',\n            dest='skip_missing',\n            default=False,\n            help=\"Ignore missing files on disk\",\n        )\n        parser.add_argument(\n            '--force',\n            action='store_true',\n            dest='force',\n            default=False,\n            help=\"This option has been removed.\")\n\n    warn_on_conflict = []\n\n    def handle(self, **options):\n        logger.warn(\n            \"The sync_stores command is deprecated, use pootle fs instead\")\n        if options[\"force\"]:\n            logger.warn(\n                \"The force option no longer has any affect on this command\")\n        if options[\"overwrite\"]:\n            logger.warn(\n                \"The overwrite option no longer has any affect on this command\")\n        super(Command, self).handle(**options)\n\n    def handle_all_stores(self, translation_project, **options):\n        path_glob = \"%s*\" % translation_project.pootle_path\n        plugin = FSPlugin(translation_project.project)\n        plugin.fetch()\n        if translation_project.project.pk not in self.warn_on_conflict:\n            state = plugin.state()\n            if any(k in state for k in [\"conflict\", \"conflict_untracked\"]):\n                logger.warn(\n                    \"The project '%s' has conflicting changes in the database \"\n                    \"and translation files. Use `pootle fs resolve` to tell \"\n                    \"pootle how to merge\",\n                    translation_project.project.code)\n                self.warn_on_conflict.append(\n                    translation_project.project.pk)\n        if not options[\"skip_missing\"]:\n            plugin.add(pootle_path=path_glob, update=\"fs\")\n        plugin.sync(pootle_path=path_glob, update=\"fs\")\n", "path": "pootle/apps/pootle_app/management/commands/sync_stores.py"}]}