From: Catalin Marinas Date: Thu, 22 Sep 2005 12:11:40 GMT Subject: Re: StGIT cannot import properly from stdin Message-ID: In-Reply-To: <433290A5.5070008@drzeus.cx> Pierre Ossman wrote: >>It works for me with the latest snapshot. What might happen in your >>case is a missing "---" line after the patch description. The import >>command reads the sys.stdin file descriptor until the first "---" >>line. After that, the git.apply() function will read the rest of the >>lines and pass them to git-apply. You can put some prints in the >>git.apply() function to check where it starts reading from. > > Hmm... it seems you're kind of right. It doesn't need the patch twice. > But it needs EOF more than once. The for-loop in __parse_patch() doesn't > start until the EOF is recieved. And the second for-loop in _input() > requires a new EOF. The line below in __parse_patch() ensures that the 'for' loop does not consume all the input lines: if re.match('---\s*$', line) or re.match('diff -', line): break Unfortunately, if the '---' line is missing, it consumes all the input lines. Is this the case with your patch? > If you would cache the input to a file (or memory) you would remove both > of these problems. True, but it requires more work than simply writing the patch to a file and reading it twice. -- Catalin